Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
OPTIMIZACIÓN DEL PROCESO PARA LEVANTAMIENTO DE REQUERIMIENTOS FUNCIONALES EN LA EMPRESA GODOWORKS JUAN PABLO ROA FRAGOZO UNIVERSIDAD CATÓLICA DE COLOMBIA FACULTAD DE INGENIERÍA PROGRAMA DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN BOGOTÁ D.C, COLOMBIA 2023 OPTIMIZACIÓN DEL PROCESO PARA LEVANTAMIENTO DE REQUERIMIENTOS FUNCIONALES EN LA EMPRESA GODOWORKS JUAN PABLO ROA FRAGOZO Trabajo de Grado para optar al título de INGENIERO DE SISTEMAS Y COMPUTACIÓN Asesor: GERMAN RICARDO RODRIGUEZ grrodriguez@ucatolica.edu.co UNIVERSIDAD CATÓLICA DE COLOMBIA FACULTAD DE INGENIERÍA PROGRAMA DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN BOGOTÁ D.C, COLOMBIA 2023 3 https://creativecommons.org/licenses/by-nc-nd/4.0/deed.es 4 NOTA DE ACEPTACIÓN ______________________________ ______________________________ ______________________________ ______________________________ ______________________________ _____________________________ Firma del Jurado _____________________________ Firma del Jurado _____________________________ MBA. GERMAN RICARDO R.R Asesor 5 TABLA DE CONTENIDO 1. INTRODUCCIÓN ............................................................................................ 13 2. JUSTIFICACIÓN ............................................................................................. 15 2.1 IMPACTO ORGANIZACIONAL ................................................................ 18 3. PLANTEAMIENTO DEL PROBLEMA ............................................................. 23 3.1 CONTEXTUALIZACIÓN DE LA EMPRESA ............................................. 23 3.1.1 GoDoWork SERVICES. ..................................................................... 23 3.1.2 GoDoWork TRADE. ........................................................................... 24 3.2 MODELO DE CICLO DE VIDA DEL SOFTWARE IMPLEMENTADO EN GODOWORKS ................................................................................................... 24 3.3 FORMULACIÓN DEL PROBLEMA .......................................................... 26 3.4 PREGUNTA PROBLEMA ......................................................................... 28 4. OBJETIVOS .................................................................................................... 29 4.1 OBJETIVO GENERAL .............................................................................. 29 4.2 OBJETIVOS ESPECÍFICOS ..................................................................... 29 5. MARCO CONCEPTUAL ................................................................................. 30 6. MARCO TEÓRICO ......................................................................................... 37 6.1 INGENIERÍA DE REQUERIMIENTOS...................................................... 37 6.1.1 Analizar la concepción del sistema. ................................................... 38 6.1.2 Indagar cuál debe ser el propósito del software. ................................ 38 6.1.3 Recrear posibles escenarios. ............................................................. 38 6.1.4 Negociar con el cliente. ...................................................................... 38 6.1.5 Especificar el funcionamiento. ............................................................ 39 6.1.6 Validar el funcionamiento de los requerimientos. ............................... 39 6.1.7 Administrar los requerimientos. .......................................................... 39 6.2 REQUERIMIENTOS ................................................................................. 40 6.2.1 Requerimientos Funcionales. ............................................................. 40 6.2.2 Requerimientos no Funcionales. ........................................................ 40 6.3 CARACTERÍSTICAS DE LOS REQUERIMIENTOS ................................ 40 6.4 IMPORTANCIA DE SELECCIONAR UNA BUENA TÉCNICA DE LEVANTAMIENTO DE REQUERIMIENTOS ...................................................... 43 6 6.5 TÉCNICAS DE RECOPILACIÓN DE REQUERIMIENTOS ...................... 43 6.5.1 Prototipo. ............................................................................................ 43 6.5.2 Modelado. .......................................................................................... 44 6.5.3 Etnografía u Observación. .................................................................. 45 6.5.4 Entrevista. .......................................................................................... 46 6.5.5 Tormenta de ideas. ............................................................................ 47 6.5.6 Historias de usuario. ........................................................................... 47 6.6 CALIDAD DE SOFTWARE ....................................................................... 47 6.6.1 Modelo ISO/IEC 25000. ..................................................................... 48 6.6.1.1 ISO/IEC 2500n. ............................................................................ 48 6.6.1.2 ISO/IEC 2501n. ............................................................................ 48 6.6.1.3 ISO/IEC 2502n. ............................................................................ 48 6.6.1.4 ISO/IEC 2503n. ............................................................................ 48 6.6.1.5 ISO/IEC 2504n. ............................................................................ 49 6.6.2 Metodología de calidad CMMI. ........................................................... 49 6.6.2.1 Inicial o Nivel 1. ............................................................................ 50 6.6.2.2 Gestionado o Nivel 2. .................................................................. 50 6.6.2.3 Definido o Nivel 3. ........................................................................ 51 6.6.2.4 Gestionado cuantitativamente o Nivel 4. ..................................... 51 6.6.2.5 Optimizado o en Optimización Continua o Nivel 5. ...................... 51 6.6.3 McCall. ............................................................................................... 51 6.7 CALIDAD A NIVEL DE PROCESO ........................................................... 53 6.8 CALIDAD A NIVEL DE PRODUCTO ........................................................ 54 6.9 CALIDAD DE USO ................................................................................... 54 6.10 METODOLOGÍA SCRUM. ..................................................................... 54 6.10.1 Roles básicos de SCRUM. .............................................................. 55 7. ESTADO DEL ARTE ...................................................................................... 57 8. ALCANCES Y LIMITACIONES ....................................................................... 60 8.1 ALCANCES .............................................................................................. 60 8.2 LIMITACIONES ........................................................................................ 60 9. METODOLOGÍA ............................................................................................. 61 7 9.1 ENFOQUE ................................................................................................ 61 9.2 FASES DE LA INVESTIGACIÓN ..............................................................61 10. DESARROLLO DEL PROYECTO .................................................................. 63 10.1 RECOLECCIÓN DE DATOS ................................................................. 63 10.1.1 Diagnóstico e identificación del proceso actual de levantamiento de requerimientos en la empresa GoDoWorks. ................................................... 63 10.1.2 Evaluación del proceso de levantamiento de requerimientos que se lleva a cabo actualmente. ............................................................................... 63 10.2 INVESTIGACIÓN .................................................................................. 71 10.2.1 CMMI. ............................................................................................. 72 10.2.2 Metodología TRIZ. .......................................................................... 75 10.3 OPTIMIZACIÓN DE PROCESO ............................................................ 83 10.3.1 Implementando la metodología CMMI al proceso de levantamiento de requerimientos en la empresa GoDoWorks. ................................................... 83 10.3.2 Adaptación de la metodología TRIZ al proceso de levantamiento de requerimientos. ............................................................................................... 84 10.3.2.1 Evaluación y análisis de los principios de la metodología TRIZ. . 85 10.3.2.2 Proceso de adaptación de la metodología TRIZ al proceso de levantamiento de requerimientos en la empresa GoDoWorks .................... 91 10.4 CAPACITACIÓN PARA LA OPTIMIZACIÓN PROCESO DE LEVANTAMIENTO DE REQUERIMIENTOS ...................................................... 99 10.5 ANÁLISIS DE LOS RESULTADOS ....................................................... 99 10.6 PRESENTACIÓN DE LOS RESULTADOS A GERENCIA .................. 101 11. CARÁCTER NOVEDOSO DEL PROYECTO ............................................... 103 12. CONCLUSIÓN .............................................................................................. 104 13. CRONOGRAMA ........................................................................................... 105 14. PRESUPUESTO Y RECURSOS .................................................................. 107 15. REFERENCIAS BIBLIOGRÁFICAS ............................................................. 108 8 LISTADO DE FIGURAS Figura 1. Cálculo del porcentaje de incidencias originadas por el analista funcional. ............................................................................................................................... 17 Figura 2. Cálculo del KPI de tiempo de ciclo. ........................................................ 19 Figura 3. Cálculo del KPI de tiempo de producción. ............................................. 19 Figura 4. Cálculo del KPI de tasa de defectos. ..................................................... 20 Figura 5. Cálculo del KPI de utilización de recursos ............................................. 20 Figura 6. Cálculo del KPI de costo de producción ................................................. 21 Figura 7. Cálculo del KPI de costo de inactividad ................................................. 22 Figura 8. Desactivación y Activación de un ACL ................................................... 25 Figura 9. Migración de un componente de una cuenta a otra ............................... 25 Figura 10. Ciclo de vida del software .................................................................... 30 Figura 11. Modelo en cascada .............................................................................. 32 Figura 12. Tipos de modelos evolutivos ................................................................ 33 Figura 13. Modelo de componentes reutilizables .................................................. 34 Figura 14. Modelo de papel en Balsamiq .............................................................. 44 Figura 15. Diagrama de casos de uso de la máquina expendedora de café ........ 45 Figura 16. Entrevista ............................................................................................. 46 Figura 17. Tormenta de ideas. .............................................................................. 47 Figura 18. Modelo de calidad CMMI ..................................................................... 50 Figura 19. Modelo de calidad McCall .................................................................... 52 Figura 20. Metodología SCRUM ........................................................................... 55 Figura 21. Nivel de conocimiento sobre los módulos del software de GoDoWorks ............................................................................................................................... 64 Figura 22. Técnicas de levantamiento de requerimientos empleados por los analistas de requerimientos funcionales dentro de GoDoWorks............................ 66 Figura 23. Responsabilidad en quien recae el caso reportado ............................. 70 Figura 24. Matriz de contradicciones .................................................................... 82 Figura 25. Áreas de proceso a mejorar en la empresa GoDoWorks ..................... 84 Figura 26. Matriz de métodos de levantamiento de requerimiento con contradicciones TRIZ ............................................................................................. 94 Figura 27. Frecuencia de principios en la matriz TRIZ .......................................... 98 Figura 28. Validación de incidencia reportada .................................................... 100 Figura 29. Factores que afectan el proceso de levantamiento en la empresa GoDoWorks ......................................................................................................... 101 9 LISTA DE TABLAS Tabla 1. Casos reportados en el ambiente de producción o preproducción de los desarrollos entregados por TI. ............................................................................... 16 Tabla 2. Casos reportados al encontrar un defecto debido a un requerimiento funcional. ............................................................................................................... 16 Tabla 3. Ventajas y Desventajas de los modelos de ciclo de vida del software. ... 35 Tabla 4. Característica de los requerimientos ....................................................... 42 Tabla 5. Conocimiento promedio del equipo de analistas funcionales en los módulos de GoDoWorks ...................................................................................................... 65 Tabla 6. Comparación de técnicas utilizadas para el levantamiento de requerimientos por analista funcional .................................................................... 67 Tabla 7. Factores que afectan el proceso de levantamiento de requerimientos .... 67 Tabla 8. Fases del proceso de levantamiento de requerimientos.......................... 71 Tabla 9. Área de proceso ...................................................................................... 73 Tabla 10. Grupos Funcionales en CMMI. .............................................................. 75 Tabla 11. Listado de los 39 parámetros de Ingeniería ........................................... 77 Tabla 12. Listado de los 40 principios de Inventiva ............................................... 81 Tabla 13. Principios TRIZ aplicables al proceso de levantamiento de requerimientos ............................................................................................................................... 91 Tabla 14. Matriz de métodos de levantamiento de requerimientos positivo y contradicción .......................................................................................................... 92 Tabla 15. Recomendación de Principios inventivos aplicablesal método de levantamiento de requerimientos en la empresa GoDoWorks ............................... 95 10 LISTA DE ANEXOS [1] ANEXO 1 (Matriz TRIZ de levantamientos de requerimientos): https://docs.google.com/spreadsheets/d/1x7gM1h1s3bWyFHOfg6Bzh9oP8U0 _Qm5a/edit?usp=sharing&ouid=104595978071520712419&rtpof=true&sd=tru e https://docs.google.com/spreadsheets/d/1x7gM1h1s3bWyFHOfg6Bzh9oP8U0_Qm5a/edit?usp=sharing&ouid=104595978071520712419&rtpof=true&sd=true https://docs.google.com/spreadsheets/d/1x7gM1h1s3bWyFHOfg6Bzh9oP8U0_Qm5a/edit?usp=sharing&ouid=104595978071520712419&rtpof=true&sd=true https://docs.google.com/spreadsheets/d/1x7gM1h1s3bWyFHOfg6Bzh9oP8U0_Qm5a/edit?usp=sharing&ouid=104595978071520712419&rtpof=true&sd=true 11 RESUMEN Este proyecto de grado busca optimizar el proceso utilizado para el levantamiento de requerimientos basado en estándares de calidad de software para la empresa uruguaya GoDoWorks. El levantamiento de requerimientos es la base fundamental sobre la cual se desarrolla el ciclo de vida de un sistema de información, ya que permite comprender qué tipo de necesidades debe solucionar un sistema, cómo deben interactuar los diferentes tipos de usuarios con la plataforma. En esta fase se recopila toda la información sobre el flujo de negocio de un cliente para comprender su necesidad y solucionarla por medio de un software. No llevar adecuadamente la fase de levantamiento de requerimientos puede generar inconvenientes en posteriores fases del desarrollo e implementación de un software, lo cual se manifiesta en modificaciones de tiempo, costos, o alcance. Un deficiente levantamiento de requerimientos afecta el cronograma establecido para un proyecto, debido a que la inconformidad por parte del cliente por no haberse compartido abiertamente las limitaciones de la plataforma llegan a afectar en fases avanzadas del proyecto, obliga a realizar nuevos cambios. Estas modificaciones afectan variables como tiempo, costos y el alcance de un proyecto. Lo anterior afecta no solo la reputación de la empresa GoDoWorks, sino que además afecta a los clientes interesados de adquirir el software, dado a que solo percibe perdidas al identificar que el uso de la plataforma no los beneficia en sus trabajos cotidianos. Para generar un aporte tangible que permita subsanar esta deficiencia, el autor revisó el proceso actual para levantamiento de requerimientos de la empresa GoDoWorks, partiendo desde la identificación del modelo de ciclo de vida que es utilizado para la elaboración de los proyectos de software. Esto se debe a que los requerimientos se encuentran familiarmente relacionados con el ciclo de vida del software. De esta forma se logró determinar en qué actividades se presentan inconformidades o malas prácticas, las cuales conducen a una inadecuada comprensión de los elementos involucrados en la solución para un cliente, y posteriores cambios en los componentes del proyecto. Palabras Clave: Calidad de software, requerimientos funcionales, TRIZ. 12 ABSTRACT This degree project seeks to optimize the process used for requirements gathering based on software quality standards for the Uruguayan company GoDoWorks. The requirements gathering is the fundamental basis on which the life cycle of an information system is developed, since it allows to understand what kind of needs a system must solve, how the different types of users must interact with the platform. In this phase, all the information about a customer's business flow is gathered to understand their needs and solve them by means of software. Failure to adequately carry out the requirements gathering phase can generate inconveniences in later phases of the development and implementation of a software, which is manifested in modifications of time, costs, or scope. A deficient requirements survey affects the schedule established for a project, because the client's non-conformity for not having openly shared the platform's limitations may affect in advanced phases of the project, forcing new changes to be made. These modifications affect variables such as time, costs and the scope of a project. This affects not only the reputation of the company GoDoWorks, but also affects customers interested in acquiring the software, since they only perceive losses when they identify that the use of the platform does not benefit them in their daily work. In order to generate a tangible contribution to remedy this deficiency, the author reviewed the current process for requirements gathering of the company GoDoWorks, starting from the identification of the life cycle model that is used for the development of software projects. This is due to the fact that the requirements are familiarly related to the software life cycle. In this way, it was possible to determine in which activities there are nonconformities or bad practices, which lead to an inadequate understanding of the elements involved in the solution for a client, and subsequent changes in the project components. Key Words: software quality, functional requirements, TRIZ. 13 1. INTRODUCCIÓN El levantamiento de requerimientos es una de las primeras fases del proceso de desarrollo del software, esta etapa permite definir el propósito y las particularidades del funcionamiento de un software, además de responder principalmente a las necesidades del usuario final, de esta forma se identifican las reglas del negocio, logrando obtener un panorama completo de la solución que se puede ofrecer1. Así surge la importancia del proceso de levantamiento de requisitos, como una técnica para identificar las necesidades de los clientes y adaptarlas a un entorno web. Es una de las principales fases en el desarrollo de software, ya que esta etapa permite definir el propósito y las particularidades del funcionamiento del software. Además, responde principalmente a las necesidades del usuario final al identificar las reglas del negocio y los requisitos del usuario. De esta manera, se logra obtener una visión completa de la necesidad que se debe satisfacer2. La evolución del software ha transformado la manera en que las personas interactúan con su entorno. Este avance tecnológico ha posibilitado la optimización de diversos procesos que previamente se realizaban de forma manual, y que en la actualidad han migrado hacia un entorno digital. Con esto en mente, es crucial comprender que la base fundamental para traducir una idea desde nuestro plano físico al plano digital radica en el proceso de levantamiento de requerimientos. Este método permite transformar nuestro lenguaje natural en un lenguaje lógico que una máquina puede interpretar. La calidad del software puede definirse como la medida en que un programa cumple con sus requisitos y objetivos, asegurando además la satisfacción de los usuarios finales. Esto se logra al cumplir con cada uno de los requisitos y expectativas de los usuarios, al mismo tiempo que garantiza la funcionalidad, seguridad, compatibilidad, usabilidad o portabilidad del software3. 1 D. Salazar Castellanos, “Industria de TI y de software colombiana: ¿cuántas empresas hay y cuánto venden?,” Mar. 02, 2022. https://www.bloomberglinea.com/2022/03/02/industria-de-ti-y-de-software- colombiana-cuantas-empresas-hay-y-cuanto-venden/ (accessed May 01, 2023). 2 J. Enriquez, S. Rosales de la vega, and M. Morales, “PROPUESTA DE LEVANTAMIENTO DE REQUERIMIENTOS EN EL DESARROLLO DE SISTEMAS APLICANDO METODOLOGÍA TRIZ,” Instituto Politécnico Nacional , Ciudad de México , 2018. Accessed: Oct. 27, 2022. [Online]. Available: https://tesis.ipn.mx/jspui/bitstream/123456789/25355/1/PROPUESTA DE LEVANTAMIENTO DE REQUERIMIENTOS EN EL DESARROLLO DE SISTEMAS APLICANDO METODOLOGÍA TRIZ.pdf 3 W. Perdomo and C. M. Zapata, “Software quality measures and their relationship with the states of the software system alpha,” Medellin, pp. 4–9, Jun. 20, 2019. Accessed: Oct.22, 2022. [Online]. Available: https://web-p-ebscohost- com.ucatolica.basesdedatosezproxy.com/ehost/detail/detail?vid=2&sid=1b917b26-638a-4cb5- ae17- 7b8bae53517f%40redis&bdata=Jmxhbmc9ZXMmc2l0ZT1laG9zdC1saXZl#AN=150919812&db=fua 14 Para la empresa GoDoWorks, resulta crucial comprender las necesidades de sus clientes con el fin de satisfacerlas de manera efectiva. Por ende, el proceso de levantamiento de requerimientos emerge como una de las etapas más significativas en la elaboración de un proyecto. Esto se debe a que esta fase recopila toda la información técnica concerniente al flujo de negocio del cliente, al mismo tiempo que proporciona detalles sobre cómo el equipo de desarrollo debe ajustar dichos requerimientos a un entorno de programación para su posterior desarrollo. Se ha registrado por medio de las incidencias reportadas por los clientes y otros analistas funcionales durante los primeros 3 meses del año 2023 se deben a una deficiente documentación. En específico, un 15,51% de estas incidencias señalan al analista funcional como responsable de los fallos debido a una documentación inadecuada en los requerimientos funcionales. Como resultado, fue necesario ajustar el alcance de los requerimientos funcionales para satisfacer las necesidades de los clientes y considerar posibles eventos que inicialmente no se tuvieron en cuenta. Este inadecuado levantamiento de requerimientos conllevó a modificaciones en el alcance de los mismos, lo que a su vez puede generar desviaciones en términos de tiempo, costos y alcance del proyecto. Esto se debe a que, si dichas modificaciones se realizan en una fase avanzada del proyecto, pueden impactar en el diseño y el desarrollo de los requerimientos. Además, esta situación compromete la reputación de la compañía, ya que puede dar a entender que la empresa carece de la madurez necesaria para adaptar las necesidades de los clientes en el software de manera efectiva. En este contexto, es necesario poner en contexto el término "optimizar". De acuerdo con el diccionario Larousse (2012), se define como "lograr el mejor resultado posible de una actividad o proceso mediante el aprovechamiento máximo de sus potencialidades"4. 4 Larousse (Firm), “Optimizar,” Larousse (Firm). p. 468, 2012. 15 2. JUSTIFICACIÓN El motivo detrás de la realización de este proyecto de investigación radica en la búsqueda de la optimización del proceso de levantamiento de requerimientos para la empresa GoDoWorks. Este proceso posee una importancia fundamental en el ciclo de vida del desarrollo de proyectos de software. Sin embargo, se han identificado debilidades en el mismo, las cuales con frecuencia se traducen en diversas insatisfacciones por parte del cliente durante la etapa de aprobación de los requerimientos funcionales que habían sido previamente acordados en reuniones. En la actualidad, cada una de las incidencias identificadas en la plataforma debe ser reportada mediante tickets utilizando la herramienta denominada WorkFlow. Esta herramienta constituye el método formal de comunicación para informar sobre incidencias dentro de la plataforma de GoDoWorks. A través de ella, es posible categorizar cada uno de los eventos presentes en la plataforma, lo que permite segmentar cada ticket de acuerdo con los siguientes criterios: • El entorno en el que se experimenta el problema. • El módulo específico que está experimentando el fallo. • La naturaleza o tipo de fallo identificado. • La persona o entidad responsable detrás del fallo. De acuerdo con la investigación en curso, se ha tomado como referencia el conjunto de casos reportados en los últimos 3 meses, cuyo total ascendió a 267 incidentes. A partir de esta base inicial, se han seleccionado los casos informados por los clientes que se encuentran en las fases de preproducción y producción. En este contexto, los clientes en producción se refieren a proyectos ya entregados, pero que ocasionalmente pueden reportar deficiencias en funcionalidades previamente proporcionadas por el departamento de Tecnologías de la Información (TI). Por otro lado, los clientes en preproducción son aquellos cuyos proyectos son nuevos y en proceso de pruebas, identificándose problemas a medida que se evalúan las funcionalidades entregadas por TI. Resultado de este proceso, se han identificado 58 casos que cumplen con las características mencionadas anteriormente. Estos casos se observan en la Tabla 1. Casos reportados en el ambiente de producción y preproducción de los desarrollos entregados por TI. 16 Tabla 1. Casos reportados en el ambiente de producción y preproducción de los desarrollos entregados por TI. Cliente Ambiente Nro. de casos escalados por problemas en desarrollos entregados por TI CLIENTE A Producción 9 CLIENTE B Producción 2 CLIENTE C Preproducción 7 CLIENTE D Preproducción 5 CLIENTE E Preproducción 17 CLIENTE F Producción 18 TOTAL 58 Fuente: Elaboración Propia En la tabla anterior, se puede apreciar el recuento total de tickets reportados por cada uno de los clientes que se encuentran en las fases de producción y preproducción. Estos tickets corresponden al desarrollo proporcionado por el área de Tecnologías de la Información (TI). Dentro de estos datos, se han tomado en cuenta únicamente los casos que surgieron debido a una gestión deficiente del análisis funcional. Como resultado de este proceso de filtrado, se obtuvo lo mostrado en la Tabla 2. Casos reportados al encontrar un defecto debido a un requerimiento funcional. Tabla 2. Casos reportados al encontrar un defecto debido a un requerimiento funcional. Responsabilidad Cliente Ambiente Cuenta de Nro. Caso GODOWORKS ANALISTA FUNCIONAL CLIENTE A Producción 1 GODOWORKS ANALISTA FUNCIONAL CLIENTE F Producción 8 TOTAL 9 Fuente: Elaboración Propia La tabla previa ilustra que de los 58 casos reportados durante los últimos 3 meses debido a incidencias identificadas en el entorno de Producción y Pre-Producción de desarrollos proporcionados por el área de Tecnologías de la Información (TI), 9 eventos, representando el 15,51% de los casos, se originaron debido a una gestión inadecuada del analista funcional, esto calcula como se muestra en la Figura 1. Cálculo del porcentaje de incidencias originadas por el analista funcional. 17 Figura 1. Cálculo del porcentaje de incidencias originadas por el analista funcional. Fuente: Elaboración Propia En la Figura 1. Cálculo del porcentaje de incidencias originadas por el analista funcional, se encontró que un 15,51% de las incidencias podrían haberse evitado desde el principio, durante la fase de levantamiento de requerimientos. Como resultado fue necesario alterar el alcance del requerimiento funcional para adaptarse a las necesidades de los clientes o a posibles eventos que inicialmente no se habían considerado. En consecuencia, se requiere devolver el requerimiento funcional a la etapa de análisis de requerimientos y ajustar su alcance. Un deficiente levantamiento de requerimientos aumenta los costos del proyecto debido a las correcciones necesarias. Cada ajuste puede llevar, en ocasiones, a un impacto en términos de horas invertidas para llevar a cabo las modificaciones requeridas, costos financieros, recursos humanos necesarios para implementar los cambios y en el alcance general del proyecto. Estos efectos varían según la etapa del ciclo de vida del software, lo que puede generar desviaciones mayores o menores en componentes clave de la gestión de proyectos como tiempo, costos y alcance. Esto a su vez puede requerir ajustes en otros aspectos para mantener el equilibrio del proyecto. Se ha observado que corregir un error de requerimiento identificado en una etapa avanzada del ciclo de vida del software implica un esfuerzo que va del 50% al 82% del total del equipo de desarrollo para abordarlo5. Norris & Rigby presentan la siguientedefinición: “La captura y el análisis de los requerimientos del sistema es una de las fases más importantes para que el 5 C. Rodríguez, “GUÍA PARA LA MEJORA EN EL LEVANTAMIENTO DE REQUERIMIENTOS DE SOFTWARE EN UNA PYME DE LOGÍSTICA DE TRANSPORTE,” BOGOTA, 2021. Accessed: Nov. 12, 2022. [Online]. Available: https://repository.ucatolica.edu.co/bitstream/10983/27048/1/GUIA PARA LA MEJORA EN EL LEVANTAMIENTO DE REQUERIMIENTOS DE SOFTWARE EN UNA PYME DE LOGISTICA DE TRANSPORTE.pdf 18 proyecto tenga éxito.”6. Esto se debe a que es la columna vertebral del proyecto, ya que permite delimitar el comportamiento de este. Con la implementación de esta propuesta se busca optimizar el proceso de levantamiento de requerimientos en la empresa GoDoWorks, puesto que, al demostrar a los clientes que se posee no solo un equipo capacitado para programar los requerimientos funcionales, sino que además existe el personal capacitado para levantar los requerimientos funcionales de forma adecuada, se ofrece un servicio con mayor seguridad a los clientes y una mayor madurez en el manejo de estándares de calidad. 2.1 IMPACTO ORGANIZACIONAL Una comunicación efectiva entre el equipo de desarrollo y los usuarios finales conduce a la formulación de requerimientos funcionales claros y precisos. Cuando se establecen requerimientos funcionales de manera adecuada, se logra una parametrización nítida de los criterios que el software debe cumplir. Esto, a su vez, posibilita la identificación y corrección de errores antes de la liberación del software, elevando tanto la calidad del producto como la satisfacción del usuario final. Además, la correcta definición de los requerimientos funcionales disminuye la probabilidad de que se realicen cambios en los requisitos, lo que resulta en una mayor eficiencia en el trabajo de los desarrolladores. La reducción de la complejidad en los requerimientos facilita su comprensión y ejecución, contribuyendo a una mayor productividad en el proceso de desarrollo. La eficiencia operativa que se lograría al implementar esta optimización en el proceso de levantamiento de requerimientos se evaluará mediante KPIs (Key Performance Indicators), que son indicadores clave o medidas de rendimiento de los procesos. Entre estos se pueden citar: • Tiempo de ciclo: El tiempo que transcurre desde que se inicia un proceso hasta que se completa, la cual se calcula como lo muestra la Figura 2. Cálculo del KPI de tiempo de ciclo. 6 E. L. S.A, Ed., Ingenieria de Software Explicada / Software Engineering Explained, 1st ed. Mexico, 1994. 19 Figura 2. Cálculo del KPI de tiempo de ciclo. Fuente: ¿Qué es el Tiempo de Ciclo? | Kanban Tool La Figura 2. Cálculo del KPI de tiempo de ciclo. Es una métrica que permite calcular el KPI del tiempo de ciclo, el cuál es una diferencia entre la fecha de terminación y la fecha de inicio del proceso, el número 1 es un adicional que corrige el problema del tiempo de ciclo de “cero días” para aquellos ítems que fueron terminados el mismo día que se empezó a trabajar en ellos. • Tasa de producción: La cantidad de unidades producidas por unidad de tiempo, la cual se calcula como lo muestra la Figura 3. Cálculo del KPI de tiempo de producción. Figura 3. Cálculo del KPI de tiempo de producción. Fuente: Cómo calcular las tasas de producción | Geniolandia La Figura 3. Cálculo del KPI de tiempo de producción es una métrica que permite calcula el KPI de tiempo de producción, en donde se debe sumar la cantidad de unidades producidas, posteriormente se divide en el periodo de tiempo requerido para realizar un corte y evaluar el tiempo total que se ha invertido durante la producción de esas unidades. • Tasa de defectos: La cantidad de productos defectuosos o errores en el proceso de producción con respecto al número de unidades monitoreadas, Tiempo de ciclo = Fecha de Terminación Fecha de Inicio (+1) Tasa de Producción = RQ1 + RQ2 + … + RQn Tiempo invertido https://kanbantool.com/es/guia-kanban/tiempo-de-ciclo#:~:text=Esta%20m%C3%A9trica%20ayuda%20a%20los%20equipos%20a%20determinar,%C2%BFCu%C3%A1l%20es%20la%20importancia%20del%20tiempo%20de%20ciclo%3F https://www.geniolandia.com/13075407/como-calcular-las-tasas-de-produccion 20 la cual se calcula como lo muestra la Figura 4. Cálculo del KPI de tasa de defectos. Figura 4. Cálculo del KPI de tasa de defectos. Fuente: Cómo Calcular una Tasa de Defectos (consejosytrucos.net) La Figura 4. Cálculo del KPI de tasa de defectos. Es una métrica que permite calcula el KPI de la tasa de defectos, en donde se debe dividir las unidades que se han encontrado con defectos sobre la muestra que se tomó para la muestra. • Utilización de recursos: La cantidad de tiempo que se utiliza cada recurso en el proceso de producción, la cual se calcula como lo muestra la Figura 5. Cálculo del KPI de utilización de recursos. Figura 5. Cálculo del KPI de utilización de recursos Fuente: Cómo dar seguimiento a la tasa de utilización e impulsar la rentabilidad del equipo [2022] • Asana Tasa de defectos = Unidades defectuosas Número de unidades de prueba (CR + GG + MU) (THD * TFO) Tasa de utilización = CR = Costo de Recursos. GG = Gastos Generales. MU = Margen De Utilidad. THD = Total de Horas Disponibles. TFO = Tarifa de Facturación Óptima. https://www.consejosytrucos.net/noticias-87876/como-calcular-una-tasa-de-defectos/#:~:text=Para%20calcular%20la%20tasa%20de%20defectos%2C%20se%20divide,dividido%20por%20el%20n%C3%BAmero%20de%20unidades%20de%20prueba. https://asana.com/es/resources/utilization-rate https://asana.com/es/resources/utilization-rate 21 La Figura 5. Cálculo del KPI de utilización de recursos. Es una métrica que permite calcular el KPI de la tasa de utilización, en donde busca determinar el margen de utilización ideal de la capacidad organizativa de una compañía según los costos de sus recursos, los gastos generales, el margen de utilidad, el total de horas disponibles y la tarifa de facturación. • Costo de producción: El costo total de producción por unidad de producto se calcula como lo muestra la Figura 6. Cálculo del KPI de costo de producción. Figura 6. Cálculo del KPI de costo de producción Fuente: ¿Cómo calcular los costos de producción? | Gestionar Fácil (gestionar-facil.com) La figura anterior muestra cómo se calcula el KPI del costo de un producto, en donde se suma cada uno de los componentes necesario para calcular el costo, en donde se interviene la materia prima, la mano de obra y el costo indirecto de fabricación. • Costo de inactividad: La cantidad de tiempo en que el proceso está inactivo debido a fallas en la maquinaria, retrasos en el suministro de materiales, etc. Esta métrica se calcula por medio de la Figura 7. Cálculo del KPI de costo de inactividad. Costo de producción Materia prima Mano de Obra directa Costo Indirecto de fabricación = + + https://www.gestionar-facil.com/como-calcular-los-costos-de-produccion/ https://www.gestionar-facil.com/como-calcular-los-costos-de-produccion/ 22 Figura 7. Cálculo del KPI de costo de inactividad Fuente: Cálculo del coste del tiempo de inactividad | Atlassian La Figura 7. Cálculo del KPI de costo de inactividad, es una métrica que permite calcular los costos crecientes de un proceso inactivo, el cuál puede calcularse en términos de minutos, horas e incluso días, en donde solo es necesario realizar una conversión de la variable Minutos del tiempo de inactividad y de coste por minuto y términos de horas o en días. Costo de inactividad Minutos del Tiempo de inactividad = * Coste Por minuto https://www.atlassian.com/es/incident-management/kpis/cost-of-downtime 23 3. PLANTEAMIENTO DEL PROBLEMA 3.1 CONTEXTUALIZACIÓN DE LA EMPRESA GoDoWorks es una empresavanguardista especializada en la implementación de soluciones tecnológicas para la gestión de movilidad, recursos humanos y activos. Su sede central está ubicada en Uruguay, y ha establecido su presencia en Colombia desde 2017. A lo largo de su trayectoria operativa, ha obtenido un amplio reconocimiento en la región como una destacada creadora de soluciones flexibles basadas en software de geolocalización. Las empresas clientes de GoDoWorks emplean sus herramientas para transformar sus procesos de recopilación de datos, que previamente se realizaban en papel. Asimismo, aprovechan la herramienta para realizar georreferenciación de los trabajadores que se encuentran en terreno, de los puntos de interés (lugares físicos donde se deben llevar a cabo tareas) y de los activos utilizados (equipos desplegados por una empresa para cumplir una función específica). Esto tiene como objetivo generar un historial de las actividades realizadas. En este historial, se puede acceder a detalles como el operario que ejecutó la tarea, el activo que se inspeccionó, el tipo de tarea llevada a cabo, el cliente al que se prestó el servicio y la documentación recopilada durante la ejecución de la tarea. La herramienta de GoDoWorks posee varias versiones enfocadas a una línea diferente de negocio, como en el caso de la vertical SERVICES, TRADE, SALES, HEALTH y FLEET. Los únicos utilizados en Colombia son SERVICES y TRADE, los cuales se explicarán a continuación. 3.1.1 GoDoWork SERVICES. Es el buque insignia de GoDoWorks, dado que es la herramienta principal en donde las otras verticales como el TRADE son agregadas como un módulo extra. SERVICES. Es una herramienta que posee la característica de trabajar con georreferenciación de operarios, bienes (equipos desplegados por una compañía para realizar una función específica), y puntos de interés (lugares donde se deben realizar trabajos) como se mencionó anteriormente. Posee el propósito de gestionar las actividades del día a día de los operarios, además de permitir procesos transparentes entre operarios y clientes a la hora de realizar y documentar trámites. 24 3.1.2 GoDoWork TRADE. Es un módulo que se habilita dentro de la herramienta de GoDoWorks SERVICES y transforma su funcionamiento de forma radical, convirtiéndolo en GoDoWorks TRADE. Es una herramienta creada por GoDoWorks para el trade marketing. Permite crear un clúster de clientes los cuales se pueden subdividir por marcas, estas marcas se pueden dividir en puntos de interés y cada punto de interés puede estar manejando unos productos en específico. De esta forma permite identificar de qué forma se está posicionando estratégicamente la mercancía en los diferentes puntos de venta. Esto con el fin de generar medidas para volver más atractivo un producto ante la competencia. Por otro lado, permite recabar información en campo sobre los productos que vende un cliente o la competencia, permitiendo registrar qué tipo de promociones se están implementando para un producto específico de la competencia, qué tipo de precios manejan cada producto y generar tareas para generar contramedidas para los casos en donde se estén perdiendo potenciales clientes. 3.2 MODELO DE CICLO DE VIDA DEL SOFTWARE IMPLEMENTADO EN GODOWORKS Los 3 (tres) modelos de ciclos de vida de software más conocidos son: Modelo en cascada, modelo evolutivo y modelo de componentes reutilizables, los cuales serán abordados más a profundidad en el marco conceptual. Se determinó que en la empresa GoDoWorks utilizan un modelo hibrido de dos fases, las cuales son: • Modelo evolutivo (Desarrollo Iterativo). • Modelo de componentes reutilizables. Esto se debe a que el software ofrecido por GoDoWorks ya se cuenta de antemano con varios módulos construidos y que dependiendo de las necesidades del cliente se van habilitando por medio de un ACL (Access Control List), haciendo que se comporte como un modelo evolutivo de tipo desarrollo Interativo, ya que posee un esqueleto completo del sistema al principio y con el paso del tiempo se va agregando otros módulos como se muestra en la Figura 8. Desactivación y Activación de un ACL. 25 Figura 8. Desactivación y Activación de un ACL Fuente: Elaboración Propia La Figura 8. Desactivación y Activación de un ACL, es el método por el cual se activa dentro de una cuenta un permiso que permite que se acceda a varias funcionalidades de la herramienta, que en un inicio se encontraban deshabilitadas, pero que ya estaban disponibles dentro de la herramienta. Por otro lado, se comporta también como un modelo de componentes reutilizables, ya que, dependiendo del área de negocio del cliente, si requiere una funcionalidad que otro cliente posee, se puede migrar esa funcionalidad al cliente que lo solicita como se muestra en la Figura 9. Migración de un componente de una cuenta a otra Figura 9. Migración de un componente de una cuenta a otra Fuente: Elaboración Propia Módulo de Bienes Módulo de clientes Módulo de legalización Módulo de Trade Marketing ACL de Trade Marketing Desactivado Módulo de Bienes Módulo de legalización Módulo de Trade Marketing Módulo de clientes ACL de Trade Marketing Activado Cuenta: 700 Módulo de Bienes Módulo de clientes Módulo de legalización Migrando Módulo de autenticación con registro facial Cuenta: 258 Módulo de Bienes Módulo de legalización Módulo de clientes En proceso de migración … 26 Como se muestra en la Figura 9. Migración de un componente de una cuenta a otra, se está migrando una funcionalidad que un cliente está solicitando en la cuenta 258, el cual posee otro cliente en la cuenta 700. Esta funcionalidad permite que el ingreso a la plataforma se realice por medio de la autenticación por registro facial. De esta forma solo es necesario generar el análisis de requerimiento para identificar si esta funcionalidad que se encuentra en la cuenta 700 no es necesario realizar cambios o si se adapta en su totalidad a la necesidad del cliente de la cuenta 258. 3.3 FORMULACIÓN DEL PROBLEMA En la actualidad, las empresas están en la búsqueda de software que se adapte precisamente a sus necesidades de mercado, con un enfoque en la confiabilidad, estabilidad, fiabilidad y calidad. Sin embargo, el mercado se ha vuelto altamente competitivo en términos de soluciones que ofrecen las mismas características que las proporcionadas por GoDoWorks, lo que impulsa a las empresas desarrolladoras a innovar de manera continua. En respuesta a esto, GoDoWorks aspira a presentar al mercado una herramienta aún más completa y de mayor calidad en cuanto al software. Es por ello que la empresa busca la capacidad de adaptarse a las necesidades de sus clientes, principalmente a través de un proceso llamado levantamiento de requerimientos. Este proceso está fundamentado en el modelo de ciclo de vida del software que se adopta. No obstante, es importante destacar que el proceso de levantamiento de requerimientos presenta ciertas debilidades que, si no se abordan adecuadamente, pueden eventualmente dar lugar al fracaso de un proyecto durante su implementación. • Mala definición de requerimientos: No es claro y preciso lo que se pretende hacer con el requerimiento funcional. • El cliente no tiene claridad sobre lo que necesitan: El cliente desconoce algunos detalles vitales sobre sus procesos internos que pueden llegar a repercutir en sus procesos internos. • La comunicación con los clientes es lenta: El cliente contesta las dudas sobre algunos detalles de los requerimientos en periodos de tiempo no óptimo. • No se comprende claramente el alcance del sistema: El límite o extensión de lo que se está haciendo o se pretende hacer no se encuentra bien delimitado. • No son respetados los tiempos: Los tiempos de entrega de los desarrollos supera la fecha tentativa planteadacon anterioridad. 27 • Falta de comunicación: No se logra establecer una serie de reuniones con los clientes para solventar dudas sobre algunos detalles de los requerimientos. • Requerimientos mal gestionados: Son los requerimientos que no se han definido correctamente, no se han documentado adecuadamente, no se han comunicado de forma clara a los interesados en el proyecto, posee ambigüedades el requerimiento y posee cambios frecuentes. • Alcance no realista: Los objetivos, documentos o actividades que se pretenden realizar de un proyecto no son alcanzables dentro de un plazo, presupuesto o no se cuenta con los recursos disponibles para llevar a cabo el proyecto. De la lista anterior, algunos factores van ligados al proceso de levantamiento de requerimientos (Mala definición de requerimientos, los clientes no tienen claridad sobre lo que necesitan, la comunicación con los clientes es lenta, falta de comunicación, requerimientos mal gestionados y alcance no realista). Si alguno de los factores mencionados anteriormente se evidencia, el alcance del proyecto se afectará de forma negativa junto con su cronograma y presupuesto. Por lo tanto, el levantamiento requerimientos se convierte en la base fundamental de un proyecto de desarrollo. Johnson en su libro Based on CHAOS 2020: Beyond Infinity Overview menciona lo siguiente “el 20% de los proyectos de software no logra el éxito, el 50% es reorientado y solo el 30% logra sus objetivos”7. De esta forma, la empresa aplica de manera general buenas prácticas durante el ciclo de vida de un software. Pero, algunas de sus fases se realizan de manera irregular, encontrándose casos donde se pierde información de levantamientos funcionales ya realizados, se adapta el código de un proyecto a otro diferente más de una vez, generando posteriores fallos y, por último, confusión sobre lo que requiere el cliente y contradicciones en algunos procesos, entre otros. Un caso real de mala reutilización de requerimientos sin un debido análisis es el desastre del cohete Ariane-5 de 1996, caso el cuál Pfleeger en su libro “Ingeniería de software. Teoría y práctica 1ra edición” profundiza más este caso: “El desastre del cohete Ariane-5, fue provocado por la reutilización de una sección de código del Ariane-4. Nuseibeh (1997) analiza el problema desde el punto de vista de la reutilización de los requerimientos. Esto es, muchos ingenieros de software sienten que pueden obtener grandes beneficios reutilizando las especificaciones de requerimientos, (y también el diseño, el código y los casos de prueba relacionados) de sistemas anteriormente desarrollados. Las especificaciones candidatas son identificadas contemplando los requerimientos de funcionalidad o de comportamiento que son iguales o similares, haciendo después las modificaciones donde fueran necesarias. En el caso del Ariane - 4, el sistema inercial de referencia 7 J. Jim, Based on CHAOS 2020: Beyond Infinity Overview. 2020 28 (SRI) realizaba la mayoría de las funciones que necesitaba el Ariane-5. Sin embargo, Nuseibeh señala que, aunque la funcionalidad que se necesitaba era similar a la del Ariane-4, había aspectos de Ariane-5 que eran significativamente diferentes. En particular la funcionalidad del módulo SRI que continuaba después del lanzamiento no se necesitaba para el Ariane-5. Es así como, si la validación de los requerimientos se hubiese realizado correctamente, los analistas habrían descubierto que las funciones activas después del lanzamiento no podían rastrearse hasta un requerimiento en la especificación o en la definición del Ariane-5. Es decir que la validación de los requerimientos podría haber jugado un papel crucial en la prevención de la destrucción del cohete.”8. El caso anterior es un ejemplo claro de lo que ocurre cuando se reciclan los requerimientos funcionales de un proyecto a otro sin un debido análisis para comprender su impacto, generando que se pierda demasiado tiempo en desarrollo, realizando un efecto dominó, culminando en que se pierda confianza en la herramienta. Por lo tanto, se llega a la siguiente pregunta: 3.4 PREGUNTA PROBLEMA ¿Es posible reducir, de manera importante, la cantidad de inconformidades que actualmente se presentan por parte de los clientes de la empresa GoDoWorks durante la fase de implementación y pruebas, a partir del ajuste del proceso establecido para el levantamiento de requerimientos funcionales? 8 S. L. Pfleeger, Ingenieria de Software teoría y práctica. Buenos Aires, 2002 29 4. OBJETIVOS 4.1 OBJETIVO GENERAL Reducir la cantidad de inconformidades generadas por los clientes de la empresa GoDoWorks durante la fase de implementación y pruebas, para evitar un reproceso de actividades, aumento en los tiempos de entrega y pérdida de imagen en el mercado. 4.2 OBJETIVOS ESPECÍFICOS Documentar el proceso actual que se usa para llevar a cabo el levantamiento de requerimientos funcionales, y poder establecer una línea base que permita medir la eficiencia obtenida a partir de los ajustes propuestos. Caracterizar las actividades donde se está presentando un insuficiente entendimiento de las necesidades de los clientes durante el levantamiento de requerimientos. Construir una propuesta para ajustar el proceso de levantamiento de requerimientos funcionales, buscando reducir las inconformidades que expresan los clientes de la compañía durante las fases de implementación y pruebas. Desarrollar un piloto controlado utilizando el proceso modificado para el levantamiento de requerimientos, y poder obtener evidencias contrastables con la línea base establecida. 30 5. MARCO CONCEPTUAL Para brindar una mayor contextualización del proyecto se abordarán algunos conceptos importantes. El ciclo de vida del software es una estructura conceptual que proporciona una guía para la planificación, el diseño, la construcción y la entrega de un software, como lo muestra la Figura 10. Ciclo de vida del software Un modelo de desarrollo de software establece una serie de faces, actividades y tareas que deben ser seguidas para asegurar que el software se construya de manera eficiente y eficaz9. Figura 10. Ciclo de vida del software Fuente: Elaboración Propia Como se muestra en la Figura 10. Ciclo de vida del software, el modelo de desarrollo de un software comienza con el análisis de requerimientos, que se encarga de determinar el objetivo del software e identificación de los requisitos de 9 M. DE Desarrollo De Software and E. Gabriel Pacienzia, “FACULTAD DE QUÍMICA E INGENIERIA ‘FRAY ROGELIO BACON’ PONTIFICIA UNIVERSIDAD CATÓLICA ARGENTINA SANTA MARIA DE LOS BUENOS AIRES Cátedra Seminario de Sistemas,” PONTIFICIA UNIVERSIDAD CATÓLICA ARGENTINA SANTA MARIA DE LOS BUENOS AIRES , 2015. Accessed: Feb. 22, 2023. [Online]. Available: https://repositorio.uca.edu.ar/bitstream/123456789/522/1/metodologias-desarrollo- software.pdf Mantenimiento Análisis de Requerimientos Diseño Implementación Verificación 31 usuario y las necesidades del sistema. En la fase de diseño se especifican los componentes e interacciones del software. En la fase de implementación se construye el código fuente y se construye el software siguiendo el diseño previamente definido. En la fase de verificación se valida que el software cumpla con los requisitos de usuario en distintas condiciones y situaciones. Finalmente, en la fase de Mantenimiento se realizan las correcciones y mejoras necesarias para garantizar que el software funcione correctamente. El ciclo de vida de un software se puede categorizar en tres modelos no definitivos para el desarrollo del software. Ya que son conceptualizaciones de los modelos que se pueden utilizar para desarrollar software, como lo son: • El modelo en cascada: Es un modelo que se aconseja para proyectos que sean poco probables que vayan a cambiar durantela fase de desarrollo, dado que permite monitorizar el avance del proyecto a partir de la documentación que se va generando, se divide en un conjunto de faces las cuales respetan un orden de forma ascendente a descendente. Cada fase debe generar un documento que debe ser aprobado para continuar con la siguiente fase, sus faces son: Requisitos, diseño, implementación, verificación y mantenimiento como se muestra en la Figura 11. Modelo en cascada. Es el modelo más seguro en comparación al evolutivo y al de componentes, pero solo es recomendable utilizarlo cuando se comprenda bien los requerimientos10. 10 DIGITAL TALENT AGENCY, “MODELO WATERFALL O EN CASCADA,” in Modelo de Gestión de Proyectos | Digital Talent Agency, 2018. Accessed: Feb. 26, 2023. [Online]. Available: https://www.dtagency.tech/cursos/metodologias_gestion_proyectos/tema_1-ModeloWaterfall.pdf 32 Figura 11. Modelo en cascada Fuente: Elaboración Propia La Figura 11. Modelo en cascada muestra cuál es el orden que sigue este modelo, en donde por cada fase se debe generar un documento o entregable completo que permite brindar una mejor claridad de los procesos realizados entre cada una de las fases. Una vez se llega a la fase de mantenimiento se empieza a validar los diferentes errores encontrados en las fases anteriores con el propósito de mejorar la implantación de un sistema. • El modelo evolutivo: Es un modelo interactivo que se caracteriza por generar una versión inicial, la cual se comparte con el cliente para recibir sus comentarios y por medio de constantes entregables con los cuales se va refinando el software. Posee la ventaja de satisfacer en un tiempo óptimo las necesidades del cliente, pero posee la desventaja que al realizar entregas regulares no se documente de forma óptima cada entregable, haciendo que en el proceso evolutivo sea casi nulo la documentación del software hasta el final11, este modelo se divide en dos modelos diferentes como se muestra en la Figura 12. Tipos de modelos evolutivo. 11 M. DE Desarrollo De Software and E. Gabriel Pacienzia, “FACULTAD DE QUÍMICA E INGENIERIA ‘FRAY ROGELIO BACON’ PONTIFICIA UNIVERSIDAD CATÓLICA ARGENTINA SANTA MARIA DE LOS BUENOS AIRES Cátedra Seminario de Sistemas,” PONTIFICIA UNIVERSIDAD CATÓLICA Requisitos Diseño Implementación Verificación Mantenimiento 33 Figura 12. Tipos de modelos evolutivos Fuente: Elaboración Propia Como se muestra en la Figura 12. Tipos de modelos evolutivo el modelo evolutivo se puede utilizar de dos formas: Incremental, en donde se entregan partes pequeñas del software totalmente funcionales y se va integrando uno a uno con el paso del tiempo. Iterativo, Se entrega el esqueleto completo del sistema al principio y con el paso del tiempo se va agregando los módulos. • Modelo de componentes reutilizables: Se basa en una metodología en donde se pretende desarrollar software con características modulares, independientes y reutilizables. Posee el propósito de reutilizar el código en vez de volverlo a desarrollar, de esta forma se identifican proyectos anteriores con funcionalidades similares que un proyecto actual requiera. ARGENTINA SANTA MARIA DE LOS BUENOS AIRES , 2015. Accessed: Feb. 26, 2023. [Online]. Available: https://repositorio.uca.edu.ar/bitstream/123456789/522/1/metodologias-desarrollo- software.pdf MODELO INCREMENTAL MODELO INTERATIVO 34 Finalmente, si es necesario, se realizarán adaptaciones con el propósito de adecuarlos a las necesidades del cliente para validarlos con el cliente12, como se muestra en la Figura 13. Modelo de componentes reutilizables. Figura 13. Modelo de componentes reutilizables Fuente: Elaboración Propia En la figura anterior se muestra el proceso que se debe llevar a cabo para el modelo de componentes reutilizables, en donde es necesario la entrada de una especificación de requerimientos para pasar a un análisis de componentes para validar que otras funcionalidades anteriores se logra adecuar de mejor forma al nuevo proyecto. De esta forma al generar un nuevo requerimiento se pasa al área de diseño el cual le da una estructura al requerimiento, después de esto se le entrega el requerimiento al área de desarrollo para programar el nuevo requerimiento y finalmente se pasa al área de validación del sistema cuando se empieza a validar si la nueva funcionalidad se adaptó según lo especificado en el levantamiento funcional. Los modelos mencionados anteriormente se deben implementar dependiendo de la naturaleza del proyecto de software, además es necesario tener en cuenta las 12 I. Crnkovic, S. Larsson, and M. Chaudron, “Component-based development process and component lifecycle,” in 27th International Conference on Information Technology Interfaces, 2005., pp. 591–596. doi: 10.1109/ITI.2005.1491195. Especificación de requerimientos Análisis de componentes Modificación de requerimientos Diseño del sistema con reutilización Desarrollo e integración Validación del sistema 35 ventajas y desventajas de cada modelo como lo muestra la Tabla 3. Ventajas y Desventajas de los modelos de ciclo de vida del software. Tabla 3. Ventajas y Desventajas de los modelos de ciclo de vida del software. Modelos de ciclo de vida de un Software Ventajas Desventajas Modelo en cascada • Usa una estructura clara. • Fácil de entender. • Documentación exhaustiva. • Pruebas bien definidas. • Falta de flexibilidad para adaptarse a cambios. • Dificultad para volver a etapas anteriores. • Retrasa las pruebas hasta después de la finalización. Modelo evolutivo • Es adaptable a las modificaciones. • Permite mejoras graduales. • Es retroalimentado constantemente. • Reducen el riesgo en las fases de levantamiento de requerimientos, diseño y desarrollo. • La documentación es escasa. • Los cambios constantes convierten a un desarrollo en una tarea cada vez más difícil y costosa. Modelo de componentes reutilizables • Ahorra tiempo y recursos. • Facilita el mantenimiento. • Reduce los costos y los riesgos. • Posee la dificultad de encontrar componentes de software adecuados para su reutilización. Fuente: Elaboración Propia La tabla anterior muestra las ventajas y desventajas de los ciclos de vida de los modelos cascada, evolutivo y de componentes reutilizables. Una parte fundamental al momento de llevar a cabo un levantamiento funcional es la planificación y el proceso de gestión de los requisitos, tiene como objetivo facilitar la comprensión de cómo se llevará a cabo la recepción, análisis, documentación y gestión de todos los requisitos en un proyecto. Este proceso inicia desde la recopilación de la información de alto nivel hasta la recolección de requisitos más detallados a lo largo del ciclo de vida del proyecto. Es importante definir: una descripción general del proyecto, el proceso de recolección de requisitos, las 36 funciones y responsabilidades de los miembros del equipo, las herramientas necesarias y el seguimiento de los requisitos 13. El término requerimiento funcional será abordado por partes. Un “Requerimiento” según el diccionario Larousse (2012) se define como “Acción y efecto de requerir o requerirse”14. Por otro lado, “Funcional” es definido por el diccionario Larousse (2012) como “Relativo a las funciones orgánicas, matemáticas o conceptuales, y especialmente a las vitales”15. Estas definiciones juntas pasan a convertirse en un método para delimitar las funcionalidades que debe realizar un software, esto a partir de la identificación de lo que un usuario puede hacer con el sistema. Los requerimientos funcionales buscan dar solución a la necesidad de un cliente, en donde si un requerimiento es ambiguo o no es bien detallado, el analista funcional debe interpretar este requerimiento bajo su propio criterio y volverlo más coherente16. Por otro lado, los requerimientosno funcionales describen una restricción que limita a los usuarios en el sistema, en donde no describe lo que debe hacer el sistema, en cambio, determina como debe comportarse el sistema, además de describir las propiedades generales del mismo. También conocidos como atributos de calidad17. La calidad de software está dada por la medida en la que un programa o sistema debe cumplir con los requisitos, expectativas y necesidades de los usuarios y las partes interesadas, también conocidas como stakeholders. Para lograr este cometido se debe cumplir con unos procesos y prácticas de desarrollo de software efectivos, como el control de calidad, la gestión de requisitos, la gestión de proyectos, la prueba de software, la documentación y el mantenimiento del software. De esta forma, la calidad de software es medible y varía de un sistema a otro, en donde no es lo mismo un software que solo es necesario ejecutarlo una vez a un software que debe ser utilizado por alrededor de 10 años o más 18. Existen varios modelos de calidad de software los cuales se deben implementar según la necesidad de un proyecto 13 IBM, “¿Qué es la gestión de requisitos? | IBM.” https://www.ibm.com/mx-es/topics/what-is- requirements-management (accessed Apr. 23, 2023). 14 Larousse (Firm), “Requerimiento,” Larousse (Firm). Larousse, p. 880, 2012. 15 Larousse (Firm), “Funcional,” Larousse (Firm). Larousse, p. 468, 2012. 16 P. Caro, “Capítulo 3 DEFINICIÓN REQUERIMIENTOS - Metodología Gestión de Requerimientos,” Apr. 24, 2012. https://sites.google.com/site/metodologiareq/capitulo-iii (accessed Oct. 09, 2022). 17 altextsoft, “Functional and Non-functional Requirements: Specification and Types | AltexSoft.” https://www.altexsoft.com/blog/business/functional-and-non- functional-requirements-specification-and-types/ (accessed Oct. 30, 2022). 18 M. Callejas-Cuervo, A. C. Alarcón-Aldana, and A. María Álvarez-Carreño, “Modelos de calidad del software, un estado del arte*,” vol. 13, no. 1, 2017, doi: 10.18041/entramado.2017v13n1.25125 37 6. MARCO TEÓRICO 6.1 INGENIERÍA DE REQUERIMIENTOS Dentro de la Ingeniería de Software, la ingeniería de requerimientos es una parte fundamental, debido a que permite un mejor entendimiento sobre la pregunta ¿Qué debe hacer un software?, de esta forma este rol se encarga de procesar las declaraciones de lo que el sistema debe hacer o las características que debe tener para satisfacer las necesidades de los usuarios y cumplir con los objetivos del proyecto. La ingeniería de requerimientos es una parte crítica del ciclo de vida del desarrollo de software, ya que debe adaptarse a las necesidades del producto, proceso, del proyecto y de las personas que hacen el trabajo19. Cabe destacar que para detallar las características del sistema se deben describir con claridad y sin ambigüedades las necesidades de los usuarios o clientes. l. Por lo general, el concepto de ingeniería de requerimientos se aborda desde dos puntos de vista, desde a fuera hacia adentro, en donde se debe identificar los principales actores y como ellos interactúan con el software. El segundo método es teniendo en cuenta el modelo de flujo del cliente, en donde solo el software va a intervenir cuando es necesario. Pero sin importar el punto de vista desde donde se mire se conseguirá el mismo resultado20. La ingeniería de requisitos o también conocida como ingeniería de requerimientos, permite generar escenarios de uso, delimitar las funciones y las peculiaridades, y se identifican las delimitaciones del proyecto, de esta forma se convierte en un mecanismo que permite evaluar las necesidades del cliente, además de distinguir la solución sin ambigüedades, evaluar la viabilidad, negociar una solución razonable, determinar la particularidad y autenticar los requisitos funcionales a medida que se transforma en un sistema funcional21. Durante esta elaboración influyen siete tareas, las cuales pueden realizarse en paralelo: 19 P. Roger, Ingeniería del software un enfoque práctico, Séptima ed. Mc Graw Hill, 2010. Accessed: Oct. 09, 2022. [Online]. Available: http://www.javier8a.com/itc/bd1/ld- Ingenieria.de.software.enfoque.practico.7ed.Pressman.PDF 20 C. Rica Arias Chaves, “La ingeniería de requerimientos y su importancia en el desarrollo de proyectos de software,” vol. 6, no. 10, pp. 1–13, Jun. 2005, Accessed: Nov. 06, 2022. [Online]. Available: http://www.redalyc.org/articulo.oa?id=66612870011 21 J. Reyes, “La ingeniería de requisitos en el desarrollo de aplicaciones informáticas,” Rev. Cuba. Informática Medica, pp. 1–15, Dec. 2020, Accessed: Nov. 06, 2022. [Online]. Available: https://web- p-ebscohost-com.ucatolica.basesdedatosezproxy.com/ehost/detail/detail?vid=0&sid=871f1674- b922-4a0d-95b2- 136e45843333%40redis&bdata=Jmxhbmc9ZXMmc2l0ZT1laG9zdC1saXZl#db=fua&AN=14786402 5 38 6.1.1 Analizar la concepción del sistema. Se comprende la necesidad del negocio y partiendo desde este punto se logra identificar la naturaleza de la solución y el equipo a cargo de la solución. 6.1.2 Indagar cuál debe ser el propósito del software. Esta actividad busca identificar cuáles son las necesidades del cliente o cuál es el propósito del software. Es importante determinar un límite claro en las capacidades del sistema, esto se debe a que solicitudes innecesarias crearan inconsistencias que alteraran el alcance de un proyecto. Por otro lado, es importante tener presente que en algunas oportunidades los clientes no están completamente seguros de lo necesitan. Además, poseen problemas para comunicar sus necesidades al ingeniero de requerimientos, omiten información que consideran que es obvia. Finalmente, es necesario destacar que cada requerimiento posee la particularidad de cambiar con el tiempo para adaptarse a las nuevas necesidades22. 6.1.3 Recrear posibles escenarios. Es el resultado de la concepción y la indagación. Se deben contemplar posibles escenarios dentro del flujo de negocio del cliente, esto con el propósito de exponerlo posteriormente a los clientes y determinar si estos acontecimientos pueden llegar a ocurrir y en caso contrario de no ser así delimitarlos23. 6.1.4 Negociar con el cliente. Se necesita negociar cuando el cliente o el usuario solicite ampliar las capacidades del sistema, argumentando “Es un proceso vital para nuestro modelo de negocio”. Se hace necesaria una reunión con el cliente en dónde es importante no abordar ese requerimiento como algo difícil de llevar a cabo, sino que pregunta si verdaderamente es necesario o en su defecto se aborda el requerimiento desde un 22 C. Caballero, “EFECTIVIDAD METODOLÓGICA PARA EL LEVANTAMIENTO DE REQUERIMIENTOS DE UNA APLICACIÓN WEB QUE PERMITA REALIZAR EL PROCESO DE PLANEACIÓN DE LA ACCIÓN PEDAGÓGICA,” UNIVERSIDAD AUTONÓMA DE BUCARAMANGA EN CONVENIO CON UNIVERSITAT OBERTA DE CATALUNYA, Bogotá, 2017. Accessed: Nov. 13, 2022. [Online]. Available: https://repository.unab.edu.co/bitstream/handle/20.500.12749/3419/2017_Tesis_Lopez_Caballero_ Cesar_Augusto.pdf?sequence=1 23 J. Francisco and A. Holgado, “Ingeniería de Requisitos.” Salamanca, Feb. 20, 2018. Accessed: Nov. 06, 2022. [Online]. Available: https://repositorio.grial.eu/bitstream/grial/1143/1/IS_I Tema 4 - Ingenieria de Requisitos.pdf 39 punto de vista diferente que permita su implementación haciendo que sea necesario levantar nuevos requerimientos23. 6.1.5 Especificar el funcionamiento. Comprende la utilización de diferentes tipos de documentos en los que se puede encontrar diagramas de casos de uso, documentos escritos, utilización de modelos matemáticos específicos, un escenario de uso, un prototipo o una combinación de todos estos. Esto permite argumentar cada especificación. Cabe destacar que la forma como se aborde la construcción de la especificación varía dependiendo de su tamaño. Para un sistema pequeño se requerirá especialmente solo los escenarios de uso, peropara un sistema grande o complejo se necesita la utilización de lenguaje natural, y modelos gráficos, los cuales permiten contextualizar y orientar cómo se desarrolla el flujo de negocio del cliente24. 6.1.6 Validar el funcionamiento de los requerimientos. Radica en revisar los requisitos funcionales entre el equipo de desarrollo, el cliente, usuarios y otros participantes. Esto con el fin de analizar cómo se mueve el flujo de negocio del cliente, y comprobar que cada requerimiento haya sido interpretado de forma debida25. 6.1.7 Administrar los requerimientos. Es un mecanismo de control que nace de la necesidad de moderar el crecimiento de los requerimientos. Este concepto se divide en tres partes. La primera parte trata sobre el almacenamiento de requerimientos, que es la práctica de almacenar los datos en un lugar seguro y que sea accesible a los diferentes miembros del equipo. La segunda parte trata sobre la administración del cambio, que es el proceso de adaptarse a las nuevas necesidades de un cliente. Por último, la administración del 24 I. Sommerville, “Capitulo 6 Ingeniería de Requerimientos,” Ing. Requerimientos, pp. 2–14, Aug. 2015. 25 A. Ramírez Fernández Tutora, “CLASIFICACIONES DE TIPOS DE REQUISITOS PARA LA MEJORA DEL PROCESO DE DESARROLLO DEL SOFTWARE,” Universidad Carlos III de Madrid, Madrid, 2012. Accessed: Nov. 06, 2022. [Online]. Available: https://core.ac.uk/download/30046163.pdf 40 seguimiento. En esta fase se buscan identificar requerimientos relacionados utilizando técnicas de filtrado utilizando el lenguaje natural26. 6.2 REQUERIMIENTOS Un requerimiento es una necesidad solicitada por parte de los interesados en el proyecto. Todo requerimiento busca conseguir un resultado específico. Estos son los que definen las funcionalidades que el sistema debe desempeñar. Además, describen los valores de las entradas que el sistema solicita para obtener como resultado las salidas27. 6.2.1 Requerimientos Funcionales. Son las funcionalidades que los desarrolladores del sistema deben brindar para satisfacer las necesidades de las partes interesadas. Estos son los que definen las características o funciones del sistema, por tanto, deben ser claros tanto para el equipo de desarrollo como para las partes interesadas17. 6.2.2 Requerimientos no Funcionales. Son las características que determinan las propiedades de un software, como su comportamiento o funcionamiento. Van ligadas a los requerimientos funcionales, porque mientras que un requerimiento funcional indica lo que realiza un software, un requerimiento no funcional indica el cómo lo hará17. 6.3 CARACTERÍSTICAS DE LOS REQUERIMIENTOS Los requerimientos funcionales les permiten a los desarrolladores entender lo que el cliente necesita del sistema, y también muestran a los desarrolladores la funcionalidad y capacidades que tendrá el sistema; Le permiten al l equipo de prueba determinar qué simulaciones ejecutar para convencer a clientes de que el sistema entregado es exactamente lo que necesitan. Para hacer esto, los requisitos deben cumplir con ciertas características para que sean comprensibles y cumplan 26 M. Briseño, “Fundamentos de ingeniería de Requerimientos,” 2015. Accessed: Nov. 06, 2022. [Online]. Available: http://ing.ens.uabc.mx/docencia/apuntes/computacion/requerimientos[12147].pdf 27 S. R. Santana, R. L. Antonelli, and P. J. Thomas, “Proceso de validación de requerimientos de software,” 2022, Accessed: Nov. 12, 2022. [Online]. Available: http://sedici.unlp.edu.ar/handle/10915/144125 41 con la tarea de ayudar a los desarrolladores a construir el sistema correctamente. Una “característica” es definida por el diccionario Larousse como “Lo que constituye el carácter distintivo o la particularidad de alguien o de lago”28. Los requerimientos deben poseer las siguientes características como se muestra en la Tabla 4. Característica de los requerimientos. En donde hace referencia a la información que se debe tener en cuenta al momento de considerar un requerimiento. 28 Larousse (Firm), “Característica,” Larousse (Firm). Larousse, p. 201, 2012. 42 Tabla 4. Característica de los requerimientos Característica Descripción Necesario Se debe consultar con el cliente si verdaderamente es necesario un requerimiento, debido a que en el mejor de los casos no sea necesario y todo se deba a un capricho del cliente. Completo El conjunto de requisitos se considera completo, cunado uno de los requisitos describe todos los estados posibles, transiciones de estado, entradas, salidas y restricciones. Consistente Un requerimiento no se debe contradecir con otro requerimiento. Correcto Tanto el cliente como el desarrollador deben revisar los requerimientos para asegurar que no posean errores. Realistas Cada requerimiento debe ser revisado para garantizar de forma anticipada que sean posibles. Factible El requisito debe ser totalmente alcanzable y dentro del presupuesto, el cronograma y otras limitaciones. Si existen dudas sobre su factibilidad, es necesario realizar investigaciones y realizar pruebas de concepto para determinar su complejidad y factibilidad. En caso de que no ser factible, se debe reconsiderar el requisito. Modificable Se debe garantizar que cualquier cambio puede realizarse de manera, fácil, completa y consistente. Priorizado Los requerimientos deben ser categorizados con el objetivo de determinar el grado de necesidad de este Crítico, Alto, Medio o Bajo. Verificable Se deben preparar pruebas que demuestren que se han cumplido los requerimientos. Rastreable Se debe organizar cada función del sistema con el propósito que se pueda rastrear cada función con su respectivo requerimiento. Claro Un requerimiento debe ser conciso, esto con el propósito de ser fácil de leer y comprender, y la redacción debe ser simple y comprensible para quienes se referirán a él en el futuro. Fuente: Elaboración Propia La Tabla 4. Característica de los requerimientos, muestra las características que debe cumplir los requerimientos funcionales para determinar si es o no es viable el requerimiento. De esta forma se valida el alcance que debe tener un requerimiento. Es necesario validar esto, ya que, si un proyecto desde un inicio no es factible por alguna limitación técnica, se debe buscar una forma para desarrollar el 43 requerimiento o tomar la decisión de aceptar que no se posee la capacidad de llevar a cabo el requerimiento. 6.4 IMPORTANCIA DE SELECCIONAR UNA BUENA TÉCNICA DE LEVANTAMIENTO DE REQUERIMIENTOS Una técnica es un método en donde se documenta una serie de pasos que van de la mano con unas reglas para su uso y criterios para verificar su corrección, en donde por lo general aplica un conjunto de procedimientos físicos o intelectuales a una tarea específica, basados en conocimientos científicos o artísticos, para lograr un resultado específico29. La “técnica” es definida por la RAE (Real Academia Española) como “Perteneciente o relativo a las aplicaciones de las ciencias y las artes”30. Existen diferentes métodos para el levantamiento de requerimientos, en donde varias de estas metodologías ya existen y tienen el propósito de asistir a los analistas funcionales a entender el flujo de trabajo del cliente, como la utilización de Mockups, diagramas de casos de uso, entrevistas, entre otros. 6.5 TÉCNICAS DE RECOPILACIÓN DE REQUERIMIENTOS Existen muchos métodos y técnicas para la recopilación de requerimientos, todos con el objetivo común de ayudar a los analistas a comprender sus necesidades. Aunque algunos analistas creen que solo es necesario una metodología o método es aplicable a todas las situaciones, una metodología o método puede no ser suficiente para todas las condiciones31. De esta forma encontramos los siguientes métodos para recopilar información para levantamiento de requerimientos: 6.5.1 Prototipo. Los prototipos
Compartir