stringtranslate.com

Requisito

Un requisito es una necesidad física o funcional singular documentada que un diseño, producto o proceso particular pretende satisfacer. Se utiliza comúnmente en diseño de ingeniería , ingeniería de sistemas , ingeniería de software , ingeniería empresarial , desarrollo de productos y optimización de procesos . Es un concepto amplio que podría referirse a cualquier función, atributo, capacidad, característica o calidad necesaria (o a veces deseada) de un sistema para que tenga valor y utilidad para un cliente, organización, usuario interno u otra parte interesada. Los requisitos pueden tener diferentes niveles de especificidad; por ejemplo, una especificación de requisitos o una "especificación" de requisitos (a menudo denominada de manera imprecisa "las" especificaciones, pero en realidad existen diferentes tipos de especificaciones) se refiere a un requisito (o a veces, conjunto de requisitos) que debe satisfacer un material, diseño, producto o servicio. [1]

Se utiliza un conjunto de requisitos como insumos en las etapas de diseño del desarrollo del producto . Los requisitos también son un aporte importante al proceso de verificación, ya que las pruebas deben rastrearse hasta requisitos específicos. Los requisitos muestran qué elementos y funciones son necesarios para el proyecto en particular. Cuando se utilizan métodos iterativos de desarrollo de software o métodos ágiles , los requisitos del sistema se desarrollan incrementalmente en paralelo con el diseño y la implementación. Con el modelo en cascada, los requisitos se desarrollan antes del diseño y la implementación.

Orígenes del término

El término requisito se ha utilizado en la comunidad de ingeniería de software desde al menos la década de 1960. [2]

Según la Guía del Cuerpo de Conocimientos de Análisis de Negocios® versión 2 del IIBA (BABOK), [3] un requisito es:

  1. Condición o capacidad que necesita una parte interesada para resolver un problema o lograr un objetivo.
  2. Una condición o capacidad que debe cumplir o poseer una solución o un componente de la solución para satisfacer un contrato, estándar, especificación u otros documentos impuestos formalmente.
  3. Una representación documentada de una condición o capacidad como en (1) o (2).

Esta definición se basa en IEEE 610.12-1990: Glosario estándar IEEE de terminología de ingeniería de software. [4]

Requisitos de producto versus proceso

Se puede decir que los requisitos se relacionan con dos campos:

Los requisitos del producto y del proceso están estrechamente vinculados; Se podría decir que un requisito de producto especifica la automatización requerida para respaldar un requisito de proceso, mientras que se podría decir que un requisito de proceso especifica las actividades requeridas para respaldar un requisito de producto. Por ejemplo, se puede imponer un requisito de costo máximo de desarrollo (un requisito de proceso) para ayudar a lograr un requisito de precio de venta máximo (un requisito de producto); un requisito de que el producto sea mantenible (un requisito de producto) a menudo se aborda imponiendo requisitos para seguir estilos de desarrollo particulares (por ejemplo, programación orientada a objetos ), guías de estilo o un proceso de revisión/inspección (requisitos de proceso).

Tipos de requisitos

Los requisitos generalmente se clasifican en tipos producidos en diferentes etapas de una progresión de desarrollo, y la taxonomía depende del modelo general que se utilice. Por ejemplo, el siguiente esquema fue ideado por el Instituto Internacional de Análisis Empresarial en su Business Analysis Body of Knowledge [5] (ver también FURPS y Tipos de requisitos ).

Requisitos arquitectónicos
Los requisitos arquitectónicos explican lo que se debe hacer identificando la integración necesaria de la estructura y el comportamiento de los sistemas , es decir, la arquitectura de un sistema.
En ingeniería de software , se denominan requisitos arquitectónicamente significativos , que se definen como aquellos requisitos que tienen un impacto medible en la arquitectura de un sistema de software . [6]
Requisitos comerciales
Declaraciones de alto nivel de las metas, objetivos o necesidades de una organización. Por lo general, describen oportunidades que una organización quiere aprovechar o problemas que quiere resolver. A menudo se expresa en un caso de negocios .
Requisitos del usuario (parte interesada)
Declaraciones de nivel medio de las necesidades de un actor o grupo de actores en particular. Por lo general, describen cómo alguien quiere interactuar con la solución prevista. A menudo actúa como un punto medio entre los requisitos comerciales de alto nivel y los requisitos de solución más detallados.
Requisitos funcionales (solución)
Por lo general, declaraciones detalladas de capacidades, comportamiento e información que necesitará la solución. Los ejemplos incluyen formatear texto, calcular un número, modular una señal. A veces también se les conoce como capacidades .
Requisitos de calidad de servicio (no funcionales)
Por lo general, declaraciones detalladas de las condiciones bajo las cuales la solución debe seguir siendo efectiva, las cualidades que debe tener la solución o las limitaciones dentro de las cuales debe operar. [7] Los ejemplos incluyen: confiabilidad, capacidad de prueba, mantenibilidad, disponibilidad. También se les conoce como características , restricciones o ilidades .
Requisitos de implementación (transición)
Por lo general, se requieren declaraciones detalladas de capacidades o comportamiento sólo para permitir la transición del estado actual de la empresa al estado futuro deseado, pero eso ya no será necesario a partir de entonces. Los ejemplos incluyen contratación, cambios de roles, educación, migración de datos de un sistema a otro.
Los requisitos reglamentarios
Requisitos definidos por leyes (federales, estatales, municipales o regionales), contratos (términos y condiciones) o políticas (a nivel de empresa, departamental o de proyecto).

Características de los buenos requisitos.

Las características de los buenos requisitos son expuestas de diversas maneras por diferentes autores, y cada autor generalmente enfatiza las características más apropiadas para su discusión general o el dominio tecnológico específico que se aborda. Sin embargo, generalmente se reconocen las siguientes características. [8] [9]

Hay muchos más atributos a considerar que contribuyen a la calidad de los requisitos. Si los requisitos están sujetos a reglas de integridad de datos (por ejemplo), entonces la exactitud/corrección y la validez/autorización también son atributos valiosos. La trazabilidad confirma que el conjunto de requisitos satisface la necesidad (ni más ni menos que lo requerido).

A lo anterior algunos añaden Observable externamente, es decir, el requisito especifica una característica del producto que es observable o experimentada externamente por el usuario. Estos defensores argumentan que los requisitos que especifican la arquitectura interna, el diseño, la implementación o las decisiones de prueba probablemente sean restricciones y deberían articularse claramente en la sección Restricciones del documento de Requisitos. La opinión contrastante es que esta perspectiva falla en dos puntos. En primer lugar, la perspectiva no reconoce que la experiencia del usuario puede estar respaldada por requisitos que el usuario no percibe. Por ejemplo, el requisito de presentar información geocodificada al usuario puede estar respaldado por el requisito de una interfaz con un socio comercial externo. La interfaz será imperceptible para el usuario, aunque la presentación de la información obtenida a través de la interfaz ciertamente no lo será. En segundo lugar, una restricción limita las alternativas de diseño, mientras que un requisito especifica las características del diseño. Para continuar con el ejemplo, un requisito que selecciona una interfaz de servicio web es diferente de una restricción que limita las alternativas de diseño a métodos compatibles con una arquitectura de inicio de sesión único.

Verificación

Todos los requisitos deben ser verificables. El método más común es mediante prueba. Si este no es el caso, se debe utilizar otro método de verificación (por ejemplo, análisis, demostración, inspección o revisión del diseño).

Ciertos requisitos, por su propia estructura, no son verificables. Estos incluyen requisitos que dicen que el sistema nunca o siempre debe exhibir una propiedad particular. La prueba adecuada de estos requisitos requeriría un ciclo de prueba infinito. Dichos requisitos deben reescribirse para que sean verificables. Como se indicó anteriormente, todos los requisitos deben ser verificables.

Los requisitos no funcionales, que no son verificables a nivel de software, aún deben conservarse como documentación de la intención del cliente. Sin embargo, pueden atribuirse a requisitos de proceso que se consideran una forma práctica de cumplirlos. Por ejemplo, un requisito no funcional de estar libre de puertas traseras se puede satisfacer reemplazándolo con un requisito de proceso para utilizar programación de pares . Otros requisitos no funcionales se rastrearán hasta otros componentes del sistema y se verificarán en ese nivel. Por ejemplo, la confiabilidad del sistema a menudo se verifica mediante análisis a nivel del sistema. El software de aviónica, con sus complicados requisitos de seguridad, debe seguir el proceso de desarrollo del DO-178B .

Actividades que conducen a la derivación de los requisitos del sistema o software. La ingeniería de requisitos puede implicar un estudio de viabilidad o una fase de análisis conceptual del proyecto y obtención de requisitos (recopilación, comprensión, revisión y articulación de las necesidades de las partes interesadas ) y análisis de requisitos , [10] análisis (verificación de coherencia e integridad), especificación. (documentar los requisitos) y validación (asegurarse de que los requisitos especificados sean correctos). [11] [12]

Los requisitos son propensos a problemas de ambigüedad, incompletitud e inconsistencia. Se ha demostrado que técnicas como la inspección rigurosa ayudan a abordar estos problemas. Las ambigüedades, lo incompleto y las inconsistencias que pueden resolverse en la fase de requisitos generalmente cuestan mucho menos corregirlas que cuando estos mismos problemas se encuentran en etapas posteriores del desarrollo del producto. El análisis de requisitos se esfuerza por abordar estas cuestiones.

Hay que considerar un equilibrio de ingeniería entre requisitos que son demasiado vagos y aquellos que son tan detallados que no

  1. Toma mucho tiempo producirlo, a veces hasta el punto de quedar obsoleto una vez completado.
  2. limitar las opciones de implementación disponibles
  3. son costosos de producir

Los enfoques ágiles evolucionaron como una forma de superar estos problemas, estableciendo requisitos de base a un alto nivel y elaborando detalles justo a tiempo o en el último momento responsable .

Requisitos de documentación

Los requisitos generalmente se escriben como un medio de comunicación entre las diferentes partes interesadas. Esto significa que los requisitos deben ser fáciles de entender tanto para los usuarios normales como para los desarrolladores. Una forma común de documentar un requisito es indicar lo que debe hacer el sistema. Ejemplo: 'El contratista debe entregar el producto a más tardar en la fecha xyz'. Otros métodos incluyen casos de uso e historias de usuarios .

Cambios en los requisitos

Los requisitos generalmente cambian con el tiempo. Una vez definidos y aprobados, los requisitos deben estar bajo control de cambios . Para muchos proyectos, los requisitos se modifican antes de que el sistema esté completo. Esto se debe en parte a la complejidad del software informático y al hecho de que los usuarios no saben lo que quieren antes de verlo. Esta característica de los requisitos ha llevado a estudios y prácticas de gestión de requisitos .

Asuntos

Estándares competitivos

Hay varios puntos de vista opuestos sobre qué son los requisitos y cómo deben gestionarse y utilizarse. Dos organismos líderes en la industria son el IEEE y el IIBA. Ambos grupos tienen definiciones diferentes pero similares de lo que es un requisito.

Disputas sobre la necesidad y los efectos de los requisitos de software.

Muchos proyectos han tenido éxito con poco o ningún acuerdo sobre los requisitos. [13] Además, alguna evidencia indica que especificar requisitos puede disminuir la creatividad y el rendimiento del diseño. [14] Los requisitos obstaculizan la creatividad y el diseño porque los diseñadores se preocupan demasiado con la información proporcionada. [15] [16] [17] De manera más general, algunas investigaciones sugieren que los requisitos de software son una ilusión creada al tergiversar las decisiones de diseño como requisitos en situaciones donde no hay requisitos reales evidentes. [18]

Mientras tanto, la mayoría de las metodologías ágiles de desarrollo de software cuestionan la necesidad de describir rigurosamente los requisitos de software por adelantado, lo que consideran un objetivo en movimiento. En cambio, la programación extrema , por ejemplo, describe los requisitos de manera informal utilizando historias de usuarios (breves resúmenes que caben en una tarjeta que explica un aspecto de lo que debe hacer el sistema) y considera que es deber del desarrollador pedirle una aclaración directamente al cliente. Las metodologías ágiles intentan capturar los requisitos en una serie de pruebas de aceptación automatizadas .

Los requisitos aumentan

Puede producirse un desplazamiento del alcance debido a que los requisitos cambian con el tiempo. En la gestión de requisitos, se permite la alteración de los requisitos, pero si no se realiza un seguimiento adecuado o los pasos anteriores (objetivos comerciales y luego requisitos del usuario) no se limitan mediante una supervisión adicional o se manejan como un costo y una posible falla del programa, entonces los cambios en los requisitos son fáciles y es probable que sucedan. Es fácil que los cambios de requisitos ocurran más rápido de lo que los desarrolladores pueden producir trabajo y, como resultado, el esfuerzo retrocede .

Taxonomías de requisitos múltiples

Existen múltiples taxonomías para los requisitos según el marco en el que se opere. (Por ejemplo, los estándares establecidos por IEEE, Vice IIBA o los enfoques del Departamento de Defensa de EE. UU.). Los diferentes lenguajes y procesos en diferentes lugares o el habla informal pueden causar confusión y desviación del proceso deseado.

Corrupciones de proceso

Un proceso dirigido por humanos está sujeto a fallas humanas en la gobernanza, donde la conveniencia, los deseos o la política pueden conducir a excepciones o una subversión abierta del proceso y desviaciones de la forma en que se supone que debe proceder el proceso en los libros de texto. Ejemplos incluyen:

Dentro del proceso del Departamento de Defensa de EE. UU., se encuentran algunos ejemplos históricos de cuestiones de requisitos.

Ver también

Referencias

  1. ^ Forma y estilo de las normas, Libro Azul de ASTM (PDF) . ASTM Internacional . 2012 . Consultado el 5 de enero de 2013 .
  2. ^ Boehm, Barry (2006). "Una visión de la ingeniería de software de los siglos XX y XXI". ICSE '06 Actas de la 28ª conferencia internacional sobre ingeniería de software . Universidad del Sur de California, University Park Campus, Los Ángeles, CA: Association for Computing Machinery, ACM Nueva York, NY, EE. UU. págs. 12-29. ISBN 1-59593-375-1. Consultado el 2 de enero de 2013 .
  3. ^ "1.3 Conceptos clave - IIBA | Instituto Internacional de Análisis Empresarial". www.iiba.org . Consultado el 25 de septiembre de 2016 .
  4. ^ "IEEE SA - 610.12-1990 - Glosario estándar IEEE de terminología de ingeniería de software".
  5. ^ Iiba; Análisis, Instituto Internacional de Negocios (2009). Una guía para los conocimientos sobre análisis empresarial® (Guía BABOK®) Versión 2.0. ISBN 978-0-9811292-1-1. {{cite book}}: |first2=tiene nombre genérico ( ayuda )
  6. ^ Chen, Lianping; Ali Babar, Mahoma; Nuseibeh, Bashar (2013). "Caracterización de requisitos arquitectónicamente significativos". Software IEEE . 30 (2): 38–45. doi :10.1109/MS.2012.174. hdl : 10344/3061 . S2CID  17399565.
  7. ^ Ralph, P. y Wand, Y. Una propuesta para una definición formal del concepto de diseño. En Lyytinen, K., Loucopoulos, P., Mylopoulos, J. y Robinson, W., (eds.), Ingeniería de requisitos de diseño: una perspectiva de diez años: Springer-Verlag, 2009, págs. 103-136
  8. ^ Davis, Alan M. (1993). Requisitos de software: objetos, funciones y estados, segunda edición. Prentice Hall. ISBN 978-0-13-805763-3.
  9. ^ Sociedad de Computación IEEE (1998). Práctica recomendada por IEEE para especificaciones de requisitos de software . Instituto de Ingenieros Eléctricos y Electrónicos, Inc. ISBN 978-0-7381-0332-7.
  10. ^ Stellman, Andrés; Greene, Jennifer (2005). Gestión de Proyectos de Software Aplicado. Medios O'Reilly. pag. 98.ISBN 978-0-596-00948-9. Archivado desde el original el 9 de febrero de 2015.
  11. ^ Wiegers, Karl E. (2003). Requisitos de software, segunda edición . Prensa de Microsoft. ISBN 978-0-7356-1879-4.
  12. ^ Joven, Ralph R. (2001). Prácticas efectivas de requisitos. Addison-Wesley. ISBN 978-0-201-70912-4.
  13. ^ Checkland, Peter (1999). Pensamiento sistémico, práctica de sistemas . Chichester: Wiley.
  14. ^ Ralph, Paul; Mohanani, Rahul (mayo de 2015). "¿Es la ingeniería de requisitos inherentemente contraproducente?". Actas del V Taller Internacional sobre los Picos Gemelos de Requisitos y Arquitectura . Florencia, Italia: IEEE. págs. 20-23.
  15. ^ Jansson, D.; Smith, S. (1991). "Fijación del diseño". Estudios de Diseño . 12 (1): 3–11. doi :10.1016/0142-694X(91)90003-F.
  16. ^ Purcell, A.; Gero, J. (1996). "Diseño y otros tipos de fijación". Estudios de Diseño . 17 (4): 363–383. doi :10.1016/S0142-694X(96)00023-3.
  17. ^ Mohanani, Rahul; Ralph, Pablo; Shreeve, Ben (mayo de 2014). "Fijación de Requisitos". Actas de la Conferencia Internacional sobre Ingeniería de Software . Hyderabad, India: IEEE. págs. 895–906.
  18. ^ Ralph, Paul (2012). "La ilusión de los requisitos en el desarrollo de software". Ingeniería de Requisitos . 18 (3): 293–296. arXiv : 1304.0116 . doi :10.1007/s00766-012-0161-4. S2CID  11499083.

enlaces externos