Ingeniería de Requisitos
La ingeniería de requisitos es la disciplina de descubrir, analizar, documentar, validar y gestionar lo que un sistema de software debe hacer y las restricciones bajo las cuales debe operar.
Definition
La ingeniería de requisitos es el proceso sistemático de obtener, analizar, especificar, validar y gestionar los servicios que un sistema de software debe proporcionar y las restricciones en su operación y desarrollo.
Scope
Esta área abarca la obtención de las necesidades de los interesados; el análisis y la negociación de objetivos en conflicto; la distinción entre requisitos funcionales y no funcionales (de calidad); las técnicas de especificación que van desde declaraciones en lenguaje natural hasta modelos formales; la validación mediante revisión y prototipado; y la gestión de los cambios de requisitos y la trazabilidad a lo largo del ciclo de vida.
Sub-topics
Core questions
- ¿Cómo se descubren y desambiguan las necesidades reales de los interesados?
- ¿Cómo deben especificarse los requisitos funcionales y no funcionales de manera precisa pero comprensible?
- ¿Cómo se detectan, negocian y resuelven los requisitos en conflicto?
- ¿Cómo se validan los requisitos y se mantienen consistentes a medida que cambian?
Key theories
- Requisitos funcionales versus no funcionales
- Los requisitos se dividen en declaraciones funcionales de lo que el sistema debe hacer y restricciones no funcionales (de calidad) como el rendimiento, la seguridad y la usabilidad que a menudo afectan a todo el sistema e impulsan la arquitectura.
- Ingeniería de requisitos orientada a objetivos
- Los sistemas se analizan en términos de objetivos de los interesados que se refinan en subobjetivos y se operacionalizan en requisitos, proporcionando una justificación, detección de conflictos y trazabilidad desde la intención de alto nivel hasta las funciones del sistema.
Clinical relevance
Los errores en los requisitos se encuentran entre los defectos más costosos porque se propagan al diseño y al código; una ingeniería de requisitos rigurosa reduce la reelaboración, alinea el software entregado con las necesidades de los interesados y proporciona la base para las pruebas de aceptación y el acuerdo contractual.
Evidence & guidelines
La norma ISO/IEC/IEEE 29148 especifica los procesos de ingeniería de requisitos y el contenido de las especificaciones de requisitos, y el área de conocimiento de Requisitos de Software de SWEBOK proporciona una referencia consensuada.
History
La ingeniería de requisitos pasó de los métodos de análisis estructurado de la década de 1970 a una subdisciplina reconocida en la década de 1990, marcada por conferencias dedicadas (RE) y revistas, el auge del modelado basado en objetivos y escenarios, y una creciente atención a los requisitos no funcionales y la negociación con los interesados.
Debates
- Requisitos iniciales versus requisitos emergentes
- La práctica impulsada por el plan favorece la especificación exhaustiva de los requisitos antes de la construcción, mientras que la práctica ágil trata los requisitos como emergentes y refinados a través de la iteración; la compensación depende de la volatilidad, las restricciones contractuales y el costo del cambio tardío.
Key figures
- Axel van Lamsweerde
- Bashar Nuseibeh
- Steve Easterbrook
- Michael Jackson
Related topics
Seminal works
- vanlamsweerde2009
- nuseibeh2000
- sommerville2015
Frequently asked questions
- ¿Por qué los errores en los requisitos son tan costosos?
- Un requisito malentendido o faltante a menudo se descubre tarde, después de que el diseño y el código se han construido sobre él, por lo que corregirlo requiere deshacer el trabajo posterior; los estudios empíricos muestran consistentemente que el costo de corregir un defecto aumenta drásticamente cuanto más tarde se encuentra.
- ¿Los proyectos ágiles realizan ingeniería de requisitos?
- Sí, pero de manera diferente. Los proyectos ágiles obtienen, analizan y validan los requisitos continuamente a través de historias de usuario, refinamiento del backlog y retroalimentación frecuente en lugar de producir un gran documento de especificación de antemano.