Procesos

Los procesos en la gestión de requisitos de software son las actividades y etapas que se llevan a cabo para capturar, analizar, documentar, validar y mantener los requisitos de un proyecto de desarrollo de software. Aquí tienes información más detallada sobre los procesos clave en la gestión de requisitos:

## **Captura de Requisitos:**

La captura de requisitos es el proceso inicial y fundamental en la gestión de requisitos de software. Implica recopilar, identificar y documentar las necesidades y expectativas de los stakeholders (clientes, usuarios finales, equipos internos, etc.) para el sistema o software que se va a desarrollar. Aquí hay información más detallada sobre la captura de requisitos:

   **Objetivo de la Captura de Requisitos:**

* El objetivo principal de la captura de requisitos es comprender completamente qué debe hacer el software y qué problemas debe resolver. Esto ayuda a definir la base sobre la cual se construirá el sistema.

**Proceso de Captura de Requisitos:**

* I**dentificación de Stakeholders:** Se identifican todas las partes interesadas que tienen algún interés o influencia en el sistema. Esto incluye a los usuarios finales, clientes, gerentes, ingenieros de software y otros.
* **Recopilación de Información:** Se reúne información de los stakeholders a través de entrevistas, encuestas, talleres y otras técnicas de recolección de datos. Es importante hacer preguntas abiertas para comprender completamente las necesidades.
* **Análisis de Documentos Existentes:** Se revisan documentos existentes, como especificaciones anteriores, documentos técnicos y informes de proyectos relacionados, para recopilar información relevante.
* **Priorización y Validación:** Los requisitos recopilados se priorizan y validan para asegurarse de que sean claros, coherentes, completos y alcanzables. Se eliminan duplicados o conflictos

**Ejemplo: DESARROLLO DE UNA APLICACIÓN MOVIL PARA ORGANIZAR LOS TRABAJOS Y TAREAS QUE TENGAMOS PENDIENTES**

**REQUISITOS:**

**Identificar las necesidades de los usuarios:** Se realizó una investigación y se llevaron a cabo encuestas a un grupo de personas que tenían dificultades con sus trabajos pendientes.

**Definir características clave:** Se determinaron características como la creación de tareas, establecimiento de recordatorios, categorización de tareas y sincronización en múltiples dispositivos.

**DISEÑO:**

**Arquitectura de la aplicación:** Se decidió que la aplicación sería compatible para iOS y Android.

**Diseño de interfaz de usuario:** Se iniciaron procesos de diseño con una interfaz de usuario fácil con botones para agregar tareas, establecer fechas de vencimiento, etc.

**IMPLEMENTACION:**

**Desarrollo de la aplicación:** Se escribió el código utilizando lenguajes de programación específicos para cada plataforma.

**Integración de funciones:** Se implementaron las funciones de creación de tareas, notificaciones, gestión de categorías, y se trabajó en la sincronización de datos entre dispositivos.

**PRUEBAS:**

**Pruebas de unidad:** Se probaron las funciones individualmente, como asegurarse de que las tareas se crearan correctamente.

**Pruebas de integración:** Se verificó que todas las funciones funcionaran juntas sin conflictos.

**Pruebas de usuario beta:** Se reclutaron usuarios beta para probar la aplicación y proporcionar retroalimentación.

**DESPLIEGUE:**

**Publicación en tiendas de aplicaciones:** La aplicación se subió a la App Store de Apple y a Google Play Store.

**Comunicación a los usuarios:** Se lanzó una campaña de marketing para anunciar la disponibilidad de la aplicación.

Se siguieron realizando actualizaciones para abordar problemas informados por los usuarios.

**Mejoras y nuevas funciones:** Se agregaron características adicionales, como la capacidad de adjuntar archivos a las tareas.

Este ejemplo nos da a entender el proceso que se lleva a cabo para realizar una aplicación que nos permita organizar y llevar pendientes nuestras actividades que tengamos programadas próximamente.

**Desafíos en la Captura de Requisitos:**

* **Comunicación Ineficiente:** La comunicación entre los stakeholders y el equipo de desarrollo puede ser un desafío. Los requisitos mal comunicados pueden llevar a malentendidos y problemas posteriores.
* **Cambio de Requisitos:** Los requisitos pueden cambiar a medida que el proyecto avanza, lo que requiere un proceso de gestión de cambios efectivo.

**Ejemplo de Captura de Requisitos:**

Supongamos que se está desarrollando un sistema de gestión de inventario para una tienda en línea. Durante la captura de requisitos, un stakeholder (el gerente de la tienda) podría expresar la necesidad de que el sistema realice lo siguiente:

* "El sistema debe permitir a los empleados agregar nuevos productos al inventario, especificando el nombre del producto, la cantidad inicial en stock y el precio de venta."

Este es un ejemplo de un requisito capturado durante el proceso de captura. El equipo de desarrollo tomaría este requisito y lo documentaría de manera más detallada en el siguiente paso de la gestión de requisitos.

En resumen, la captura de requisitos es la fase inicial en la que se recopilan las necesidades y expectativas de los stakeholders para el desarrollo de software. Es un paso crucial para garantizar que el software resultante cumpla con los objetivos y requisitos del proyecto.

## **Analisis De requisitos**

El análisis de requisitos es una etapa crítica en la gestión de requisitos de software. Se enfoca en descomponer, comprender y organizar los requisitos para garantizar que sean claros, coherentes, completos y alcanzables. Aquí tienes información más detallada sobre el proceso de análisis de requisitos:

**Objetivo del Análisis de Requisitos:**

* El objetivo principal del análisis de requisitos es convertir los requisitos iniciales, que a menudo son de alto nivel y pueden ser ambiguos, en requisitos detallados y específicos que el equipo de desarrollo pueda comprender y implementar.

**Actividades Clave en el Análisis de Requisitos:**

**1. Descomposición de Requisitos:**

* En esta etapa, los requisitos de alto nivel se descomponen en requisitos más pequeños y específicos. Se dividen en unidades más manejables que pueden abordarse individualmente.
* Ejemplo: Si un requisito de alto nivel es "El sistema debe ser fácil de usar", se puede descomponer en requisitos específicos relacionados con la interfaz de usuario y la navegación.

**2. Identificación de Requisitos Faltantes:**

* Durante el análisis, es importante identificar cualquier requisito que falte o que no esté claro. Esto se logra a través de la revisión de documentos y la comunicación con los stakeholders.
* Ejemplo: Si durante el análisis se descubre que no se ha mencionado la seguridad de los datos, se debe identificar y documentar ese requisito.

**3. Resolución de Ambigüedades:**

* Se abordan y se resuelven cualquier ambigüedad o contradicción en los requisitos. Es importante aclarar los requisitos para evitar malentendidos más adelante.
* Ejemplo: Si un requisito es "El sistema debe ser rápido", se debe definir claramente qué significa "rápido" en términos de tiempo de respuesta.

**4. Priorización de Requisitos:**

* Los requisitos se priorizan para determinar cuáles son esenciales y cuáles son opcionales. Esto ayuda en la planificación y asignación de recursos.
* Ejemplo: Se puede priorizar un requisito como "El sistema debe ser compatible con múltiples navegadores" como de alta prioridad, mientras que otros menos críticos pueden ser de baja prioridad.

**5. Documentación Detallada:**

* Los requisitos se documentan de manera detallada en un formato comprensible para el equipo de desarrollo. Esto puede incluir descripciones, casos de uso, diagramas y ejemplos concretos.
* Ejemplo: Se crea un documento de requisitos que especifica en detalle cómo debe funcionar una función específica del software.

**Beneficios del Análisis de Requisitos:**

* El análisis de requisitos garantiza que los requisitos sean comprensibles y adecuados para su implementación. Ayuda a evitar malentendidos y cambios costosos más adelante en el proyecto.
* Mejora la comunicación entre los stakeholders y el equipo de desarrollo al aclarar los requisitos y resolver ambigüedades.
* Facilita la planificación y la asignación de recursos al priorizar los requisitos y proporcionar una base sólida para la estimación del trabajo.

En resumen, el análisis de requisitos es un proceso fundamental en la gestión de requisitos de software que se enfoca en comprender, descomponer y documentar los requisitos de manera detallada y precisa. Esto contribuye a la calidad del software y al éxito del proyecto.

## **Resolución de requisitos:**

La resolución de requisitos es un proceso crítico en la gestión de requisitos de software que se enfoca en abordar y resolver cualquier ambigüedad, conflicto o problema relacionado con los requisitos. Aquí tienes información más detallada sobre el proceso de resolución de requisitos:

**Objetivo de la Resolución de Requisitos:**

* El objetivo principal de la resolución de requisitos es garantizar que los requisitos sean claros, coherentes, completos y alcanzables. También busca eliminar cualquier ambigüedad o contradicción en los requisitos.

**Actividades Clave en la Resolución de Requisitos:**

**1. Identificación de Problemas:**

* En esta etapa, se identifican y se documentan los problemas o desafíos relacionados con los requisitos. Esto puede incluir requisitos ambiguos, contradictorios o incompletos.
* Ejemplo: Identificar que dos requisitos aparentemente contradictorios han sido documentados en el conjunto de requisitos.

**2. Comunicación con Stakeholders:**

* Es importante comunicarse con los stakeholders, como los usuarios finales y los responsables del proyecto, para comprender sus expectativas y resolver cualquier pregunta o preocupación.
* Ejemplo: Mantener una reunión con el cliente para aclarar un requisito que no está claro en la documentación.

**3. Análisis y Resolución de Problemas:**

* Se lleva a cabo un análisis detallado de los problemas identificados. Esto implica revisar los requisitos, buscar soluciones y tomar decisiones sobre cómo resolver los problemas.
* Ejemplo: Analizar los requisitos contradictorios y determinar cuál de ellos debe prevalecer o si es necesario realizar una modificación.

**4. Documentación de Cambios:**

* Si se realizan cambios o aclaraciones en los requisitos como resultado de la resolución, estos cambios se documentan de manera adecuada para mantener un registro claro de las decisiones tomadas.
* Ejemplo: Registrar la resolución de un problema en un documento de cambios o en un sistema de seguimiento de requisitos.

**5. Validación de Resoluciones:**

* Las resoluciones propuestas se validan con los stakeholders relevantes para garantizar que sean aceptables y cumplan con las expectativas.
* Ejemplo: Obtener la aprobación del cliente o usuario final después de haber resuelto un problema de requisito.

**Beneficios de la Resolución de Requisitos:**

* La resolución de requisitos contribuye a eliminar malentendidos, ambigüedades y conflictos en los requisitos, lo que a su vez reduce el riesgo de errores y retrabajo en etapas posteriores del proyecto.
* Mejora la comunicación y la colaboración entre los stakeholders y el equipo de desarrollo al abordar las preocupaciones y preguntas de manera efectiva.
* Aumenta la calidad de los requisitos y, por lo tanto, la calidad del software resultante.

En resumen, la resolución de requisitos es un proceso esencial en la gestión de requisitos de software que se centra en abordar y resolver problemas relacionados con los requisitos para garantizar su claridad y coherencia. Esto contribuye al éxito del proyecto y a la satisfacción de los stakeholders.

## **Requisitos funcionales y no funcionales**

La especificación de requisitos funcionales y no funcionales es una parte crítica en la gestión de requisitos de software. Los requisitos funcionales se centran en lo que el software debe hacer, mientras que los requisitos no funcionales se refieren a cómo debe hacerlo y a las características de rendimiento, seguridad y calidad que debe tener. Aquí tienes información más detallada sobre la especificación de requisitos funcionales y no funcionales:

**Requisitos Funcionales:**

Descripción de Requisitos Funcionales: Los requisitos funcionales son declaraciones que describen las funciones o características específicas que el software debe tener. Estos requisitos se centran en "qué" debe hacer el software.

Ejemplo de Requisito Funcional: "El sistema debe permitir a los usuarios iniciar sesión en sus cuentas con un nombre de usuario y una contraseña válidos."

**Características de los Requisitos Funcionales:**

1. **Descripción Detallada:** Cada requisito funcional debe tener una descripción detallada que explique su funcionalidad en términos claros y comprensibles.
2. **Priorización:** Los requisitos funcionales se pueden priorizar para identificar cuáles son esenciales y cuáles son opcionales. Esto ayuda en la planificación y la asignación de recursos.
3. **Casos de Uso:** Los casos de uso a menudo se utilizan para especificar requisitos funcionales en detalle. Estos describen escenarios de interacción entre el usuario y el sistema.

**Requisitos No Funcionales:**

**Descripción de Requisitos No Funcionales:** Los requisitos no funcionales son declaraciones que describen las características de rendimiento, seguridad, usabilidad y calidad que debe tener el software. Se centran en "cómo" debe funcionar el software.

Ejemplo de Requisito No Funcional: "El sistema debe ser capaz de manejar simultáneamente al menos 1000 usuarios activos sin degradación del rendimiento."

**Características de los Requisitos No Funcionales:**

1. Categorías Variadas: Los requisitos no funcionales pueden abordar diversas categorías, como rendimiento, seguridad, usabilidad, escalabilidad, disponibilidad y más.
2. Mediciones y Métricas: A menudo, los requisitos no funcionales se expresan en términos de mediciones o métricas específicas, como tiempos de respuesta, tasas de error o capacidad de carga.
3. Aseguramiento de Calidad: Los requisitos no funcionales contribuyen al aseguramiento de la calidad del software al establecer estándares y expectativas de rendimiento y calidad.

**Beneficios de la Especificación de Requisitos Funcionales y No Funcionales:**

* La especificación clara de requisitos funcionales y no funcionales ayuda a garantizar que el software cumpla con las necesidades del cliente y los stakeholders.
* Los requisitos no funcionales proporcionan estándares de calidad y rendimiento que son fundamentales para la satisfacción del usuario.
* La priorización de requisitos funcionales y no funcionales permite una planificación efectiva y una asignación de recursos adecuada.

En resumen, la especificación de requisitos funcionales y no funcionales es esencial en la gestión de requisitos de software, ya que establece lo que el software debe hacer y cómo debe hacerlo. Esto proporciona una base sólida para el diseño, desarrollo y prueba del software.

## Validacion de Requisitos

La validación de requisitos es un proceso crítico en la gestión de requisitos de software que se enfoca en asegurarse de que los requisitos sean correctos, completos y satisfagan las necesidades del cliente y los stakeholders. Aquí tienes información más detallada sobre el proceso de validación de requisitos:

**Objetivo de la Validación de Requisitos:**

* El objetivo principal de la validación de requisitos es garantizar que los requisitos sean precisos y que reflejen con precisión las necesidades y expectativas del cliente y los usuarios finales.

**Actividades Clave en la Validación de Requisitos:**

1. Revisión de Requisitos:

* Durante esta etapa, los requisitos se revisan minuciosamente para identificar cualquier error, ambigüedad o falta de claridad. Se verifica si los requisitos son coherentes y completos.
* Ejemplo: Revisar un requisito que dice "El sistema debe ser rápido" para asegurarse de que se defina claramente lo que significa "rápido" en términos de tiempo de respuesta.

**2. Verificación con Stakeholders:**

* Se comunica con los stakeholders, como el cliente y los usuarios finales, para validar que los requisitos reflejen sus expectativas y necesidades. Se busca su aprobación y comentarios.
* Ejemplo: Mostrar los requisitos a los usuarios finales y pedirles que confirmen que los requisitos abordan sus requerimientos.

**3. Pruebas de Validación:**

* En algunos casos, se pueden realizar pruebas para validar los requisitos. Estas pruebas pueden incluir simulaciones o prototipos para demostrar que los requisitos se cumplen.
* Ejemplo: Crear un prototipo de la interfaz de usuario para mostrar cómo funcionarán las funciones del software.

**4. Documentación de Resultados:**

* Los resultados de la validación se documentan de manera adecuada. Esto incluye registrar cualquier corrección o aclaración realizada en los requisitos como resultado de la validación.
* Ejemplo: Documentar que se ha actualizado un requisito después de recibir comentarios de los usuarios finales.

**5. Aprobación de Requisitos:**

* Después de la validación exitosa, se busca la aprobación final de los requisitos por parte de los stakeholders clave. Esto confirma que los requisitos son aceptables y deben seguirse en el proyecto.
* Ejemplo: Obtener la firma de aprobación del cliente indicando que los requisitos son correctos.

**Beneficios de la Validación de Requisitos:**

* La validación de requisitos ayuda a garantizar que los requisitos sean precisos y se ajusten a las expectativas del cliente, lo que reduce el riesgo de errores costosos durante el desarrollo del software.
* Mejora la comunicación y la comprensión entre el equipo de desarrollo y los stakeholders al validar que todos estén de acuerdo en los requisitos.
* Contribuye a la satisfacción del cliente al garantizar que el software cumpla con sus necesidades y expectativas.

En resumen, la validación de requisitos es un proceso esencial en la gestión de requisitos de software que busca garantizar la calidad y la precisión de los requisitos, lo que a su vez contribuye al éxito del proyecto de desarrollo de software.

## Consideraciones Practicas

Las consideraciones prácticas son un aspecto fundamental en la gestión de requisitos de software, ya que ayudan a garantizar que el desarrollo del software se realice de manera eficiente y dentro de los límites de recursos, tiempo y presupuesto disponibles. Aquí tienes más detalles sobre las consideraciones prácticas en la gestión de requisitos:

    **1. Presupuesto:**

* Uno de los factores clave en la gestión de requisitos es el presupuesto disponible para el proyecto de desarrollo de software. Las consideraciones incluyen la asignación de recursos financieros para la captura, análisis, documentación y validación de requisitos.

**2. Plazos:**

* Los plazos son otro aspecto crítico. Se deben establecer fechas límite realistas para la captura, análisis y documentación de requisitos. Los plazos ajustados pueden afectar la calidad de los requisitos y el éxito general del proyecto.

**3. Recursos Humanos:**

* La disponibilidad y la asignación de recursos humanos adecuados son esenciales. Esto incluye analistas de requisitos, desarrolladores, probadores y otros miembros del equipo. La falta de personal capacitado puede retrasar el proceso de gestión de requisitos.

**4. Herramientas y Tecnología:**

* La elección de las herramientas y tecnología adecuadas para la gestión de requisitos es importante. Las herramientas de software pueden facilitar el seguimiento, la documentación y la colaboración en la gestión de requisitos.

**5. Cambios en los Requisitos:**

* La gestión de cambios es crucial. Los cambios en los requisitos son comunes a lo largo del ciclo de vida del proyecto. Deben implementarse procesos efectivos para gestionar y controlar los cambios de manera que no afecten negativamente al presupuesto y los plazos.

**6. Escalabilidad:**

* Se debe considerar si el sistema de gestión de requisitos es escalable. Esto es importante para proyectos que pueden crecer con el tiempo o para organizaciones que gestionan múltiples proyectos simultáneamente.

**7. Comunicación y Colaboración:**

* La comunicación efectiva y la colaboración entre los miembros del equipo son esenciales. Se deben establecer canales de comunicación claros para garantizar que todos los stakeholders estén alineados y se tomen decisiones informadas.

**8. Alineación con Objetivos del Negocio:**

* Los requisitos deben estar alineados con los objetivos del negocio y las necesidades de los usuarios finales. La consideración de cómo el software impactará en la empresa es esencial para el éxito.

**Ejemplo de Consideración Práctica:**

Supongamos que una empresa está desarrollando un sistema de gestión de recursos humanos. Durante la gestión de requisitos, se debe tener en cuenta el presupuesto asignado, los plazos para implementar el sistema antes de la temporada de contratación y la disponibilidad de personal calificado para trabajar en el proyecto. Además, se debe considerar la posibilidad de futuros cambios en los requisitos a medida que la empresa crezca.

En resumen, las consideraciones prácticas son aspectos fundamentales en la gestión de requisitos de software y se centran en la asignación de recursos, el presupuesto, los plazos y otros factores que afectan la ejecución eficiente del proyecto de desarrollo de software. Estas consideraciones son esenciales para garantizar el éxito del proyecto y la satisfacción de los stakeholders.

## Referencias

* Rodriguez, G. J. (2023). Técnicas efectivas para la toma de requerimientos. *Northware*. https://www.northware.mx/blog/tecnicas-efectivas-para-la-toma-de-requerimientos/#:~:text=Los%20Requerimientos%20de%20Software%20son,las%20entradas%20para%20producir%20salidas.
* Mood, K. (s. f.-b). *Blog*. https://www.knowmadmood.com/blog/desarrollo-de-software-importancia-y-tcnicas-de-la-captura-de-requisitos
* Walker, R. (2023). Análisis de requisitos de software. AppMaster - ultimate all-in no-code platform. https://appmaster.io/es/blog/analisis-de-requisitos-de-software
* Enriquez, S. (2023, 6 febrero). NLP tool for the detection of Ambiguities in Software requirements written in Spanish. https://easychair.org/publications/preprint/RgRDR
* Northware. (2022). Requerimientos en el desarrollo de software y aplicaciones. Northware. https://www.northware.mx/blog/requerimientos-en-el-desarrollo-de-software-y-aplicaciones/#:~:text=Generalmente%20hay%20dos%20tipos%20de,c%C3%B3mo%20debe%20comportarse%20el%20sistema.
* Santana, S. (2020). Evaluación de técnicas para la validación de requerimientos en entornos de trabajo para el desarrollo de software. http://sedici.unlp.edu.ar/handle/10915/103994#:~:text=La%20validaci%C3%B3n%20de%20requerimientos%20es,y%20expectativas%20de%20los%20usuarios.
* Consideraciones prácticas - i NTERRUPCIÓN DE LOS ASUNTOS PARA LOS REQUISITOS DEL SOFTWARE. (s. f.). https://1library.co/article/consideraciones-pr%C3%A1cticas-i-nterrupci%C3%B3n-asuntos-requisitos-software.1y9o5xdy