Los requerimientos funcionales son declaraciones de los servicios que el sistema debe proporcionar, de cómo debe reaccionar ante entradas particulares y de cómo debe comportarse en situaciones específicas. Los requerimientos no funcionales son restricciones sobre esos servicios o funciones (de tiempo, del proceso de desarrollo o impuestas por estándares) y suelen aplicarse al sistema como un todo, no a una característica individual. Deben expresarse de forma cuantitativa y medible mediante métricas (transacciones por segundo, tiempo de aprendizaje, tasa de fallas) para poder verificarse objetivamente.
Sommerville clasifica los requerimientos no funcionales en tres tipos:
Los atributos de calidad sustentan buena parte de los requerimientos no funcionales. El modelo de calidad del producto de ISO/IEC 25010:2011 define ocho características: adecuación funcional, eficiencia de desempeño, compatibilidad, usabilidad, fiabilidad, seguridad, mantenibilidad y portabilidad.
Conviene distinguir el nivel de detalle. Los requerimientos de usuario son declaraciones, en lenguaje natural y con diagramas, de los servicios y restricciones, dirigidas a clientes y usuarios; los requerimientos del sistema son descripciones detalladas de funciones, servicios y restricciones operacionales que definen lo que debe implementarse y pueden formar parte del contrato entre cliente y proveedor. Los requerimientos del dominio se derivan del dominio de aplicación y reflejan sus características; pueden ser funcionales o no funcionales.
Otras categorías útiles al clasificar por escenario: los requerimientos de negocio describen los objetivos de alto nivel de la organización y el beneficio esperado (responden al 'porqué' del proyecto y ayudan a fijar el alcance); una restricción (constraint) limita las opciones de diseño o implementación (lenguaje, plataforma o estándares obligatorios) y no describe una función del sistema. El SWEBOK separa requerimientos de producto (necesidad o restricción sobre el software) de requerimientos de proceso (restricción sobre el desarrollo).
Para redactar la especificación, IEEE 830-1998 fija ocho características de una buena SRS: correcta, no ambigua, completa, consistente, jerarquizada por importancia y/o estabilidad, verificable, modificable y rastreable. El estándar vigente es ISO/IEC/IEEE 29148:2018, que dejó obsoletos IEEE 830-1998, IEEE 1233-1998 e IEEE 1362-1998.
1. Según Ian Sommerville, ¿cuál de las siguientes opciones define correctamente un requerimiento funcional?
Sommerville define los requerimientos funcionales como declaraciones de los servicios que debe prestar el sistema y de su reacción ante entradas particulares; la opción 0 describe un requerimiento no funcional y la opción 3 describe una restricción de diseño. (Ian Sommerville, Ingeniería de Software (9.ª/10.ª ed.), cap. Ingeniería de requerimientos)
2. ¿Cuál de los siguientes enunciados describe correctamente a los requerimientos no funcionales, según Sommerville?
Sommerville define a los requerimientos no funcionales como restricciones sobre los servicios o funciones ofrecidos, aplicadas normalmente al sistema como un todo, a diferencia de los requerimientos funcionales (opción 1). (Ian Sommerville, Ingeniería de Software, cap. Ingeniería de requerimientos)
3. En el documento de requerimientos de un sistema bancario se lee lo siguiente: 'Cuando el usuario introduce un número de cuenta inválido, el sistema debe mostrar el mensaje "Cuenta no encontrada" y solicitar el dato nuevamente'. ¿Qué tipo de requerimiento ejemplifica este enunciado?
El enunciado especifica la reacción del sistema ante una entrada concreta (una cuenta inválida), lo que corresponde a un requerimiento funcional; no impone una restricción de calidad sobre el sistema en su conjunto. (Ian Sommerville, Ingeniería de Software, cap. Ingeniería de requerimientos)
4. Un cliente solicita que la aplicación móvil inicie sesión en menos de 2 segundos en el 95% de los casos, incluso con una conexión de datos de baja velocidad. ¿A qué tipo de requerimiento corresponde esta especificación?
La especificación impone un límite de tiempo medible sobre el comportamiento en ejecución del sistema, característico de un requerimiento no funcional de producto (rendimiento), y no describe un servicio específico. (Ian Sommerville, Ingeniería de Software, clasificación de requerimientos no funcionales)
5. Sommerville clasifica los requerimientos no funcionales en tres categorías principales. ¿Cuáles son?
Sommerville organiza los requerimientos no funcionales en tres tipos: de producto, organizacionales y externos; la opción 1 corresponde a otra clasificación distinta según el origen del requerimiento. (Ian Sommerville, Ingeniería de Software, sección Requerimientos no funcionales)
6. ¿Cuál de las siguientes listas corresponde a ejemplos de requerimientos no funcionales de producto, según la clasificación de Sommerville?
Los requerimientos de producto especifican o restringen el comportamiento en ejecución del software e incluyen rendimiento, fiabilidad, usabilidad, eficiencia y portabilidad; la opción 0 corresponde a requerimientos externos. (Ian Sommerville, Ingeniería de Software, clasificación de requerimientos no funcionales)
7. ¿De dónde se derivan los requerimientos no funcionales organizacionales, según la clasificación de Sommerville?
Los requerimientos organizacionales se derivan de las políticas y procedimientos de las organizaciones del cliente y del desarrollador; los factores regulatorios (opción 1) corresponden a requerimientos externos. (Ian Sommerville, Ingeniería de Software, clasificación de requerimientos no funcionales)
8. Un requerimiento establece que el sistema de historiales clínicos debe cumplir con la legislación vigente en materia de protección de datos personales de los pacientes. ¿A qué categoría de requerimiento no funcional pertenece?
La exigencia proviene de una ley externa al sistema y a su proceso de desarrollo, lo que corresponde a un requerimiento externo (legislativo), y no de las políticas internas de la organización. (Ian Sommerville, Ingeniería de Software, clasificación de requerimientos no funcionales)
9. Una empresa desarrolladora establece internamente que todo su software debe documentarse siguiendo el estándar de codificación propio de la compañía, mientras que un organismo gubernamental exige que el sistema de nómina calcule las retenciones fiscales conforme a la ley vigente. ¿Cómo se clasifican, respectivamente, estos dos requerimientos no funcionales?
El estándar de codificación de la propia empresa se deriva de sus políticas internas (requerimiento organizacional), mientras que la exigencia legal de un organismo externo al sistema es un requerimiento externo de tipo legislativo. (Ian Sommerville, Ingeniería de Software, clasificación de requerimientos no funcionales)
10. ¿Cómo se caracterizan los requerimientos de usuario, según Sommerville?
Los requerimientos de usuario se redactan en lenguaje natural y con diagramas, dirigidos a clientes y usuarios, a diferencia de los requerimientos del sistema, que son descripciones técnicas detalladas para los desarrolladores. (Ian Sommerville, Ingeniería de Software, Requerimientos de usuario y del sistema)
11. ¿Qué son los requerimientos del sistema, de acuerdo con Sommerville?
Los requerimientos del sistema son descripciones detalladas de funciones, servicios y restricciones operacionales que pueden formar parte del contrato entre cliente y proveedor; la opción 3 describe a los requerimientos de usuario. (Ian Sommerville, Ingeniería de Software, Requerimientos de usuario y del sistema)
12. En un proyecto de software, el cliente escribe: 'El sistema debe permitir a los empleados registrar sus horas trabajadas de forma sencilla'. El equipo de análisis lo traduce como: 'El módulo de asistencia debe almacenar cada entrada y salida con marca de tiempo con precisión de un minuto y validarla contra el turno asignado en la base de datos'. ¿Cómo se relacionan ambos enunciados?
El primer enunciado, general y en lenguaje natural, es un requerimiento de usuario; el segundo, técnico y detallado, es el requerimiento del sistema que especifica cómo implementarlo. (Ian Sommerville, Ingeniería de Software, Requerimientos de usuario y del sistema)
13. Un contrato de desarrollo de software incluye la siguiente cláusula: 'El sistema de facturación electrónica debe generar el comprobante fiscal en formato XML validado contra el esquema publicado por la autoridad tributaria, en un tiempo no mayor a 3 segundos por transacción'. Esta cláusula forma parte del contrato entre cliente y proveedor. ¿Qué tipo de requerimiento es?
La descripción es técnica, precisa y forma parte del contrato entre cliente y proveedor, rasgos propios de un requerimiento del sistema; un requerimiento de usuario se redactaría en lenguaje natural general, sin ese nivel de detalle. (Ian Sommerville, Ingeniería de Software, Requerimientos de usuario y del sistema)
14. ¿Qué característica distingue a los requerimientos del dominio, según Sommerville?
Los requerimientos del dominio se derivan del dominio de aplicación del sistema y reflejan sus características; pueden ser funcionales o no funcionales, a diferencia de los organizacionales o externos. (Ian Sommerville, Ingeniería de Software, Requerimientos del dominio)
15. En el desarrollo de un sistema de control de tráfico aéreo se incluye el siguiente enunciado: 'Debido a las normas de separación mínima entre aeronaves usadas en la práctica de la aviación civil, el sistema debe recalcular la ruta cuando dos aeronaves reduzcan su distancia vertical a menos de 300 metros'. ¿Qué tipo de requerimiento ejemplifica mejor este enunciado?
La regla de separación mínima entre aeronaves es una característica propia del dominio de la aviación, por lo que constituye un requerimiento del dominio, y no de una política interna o de una ley específica citada. (Ian Sommerville, Ingeniería de Software, Requerimientos del dominio)
16. El estándar IEEE 830-1998 establece las características que debe tener una buena Especificación de Requerimientos de Software (SRS). ¿Cuántas características define este estándar?
El IEEE 830-1998 define ocho características de una buena SRS: correcta, no ambigua, completa, consistente, jerarquizada, verificable, modificable y rastreable; las demás opciones omiten o agregan elementos que no forman parte de la lista oficial. (IEEE Std 830-1998, Recommended Practice for Software Requirements Specifications, sección 4.3)
17. De acuerdo con el estándar IEEE 830-1998, ¿cuál de las siguientes opciones NO forma parte de las características de una buena Especificación de Requerimientos de Software (SRS)?
El IEEE 830-1998 no incluye 'rentable' entre las ocho características de una SRS; consistente, verificable y rastreable sí forman parte de esa lista. (IEEE Std 830-1998, Recommended Practice for Software Requirements Specifications, sección 4.3)
18. ¿Cuál es el estándar vigente para la ingeniería de requerimientos que sustituyó a los estándares IEEE 830-1998, IEEE 1233-1998 e IEEE 1362-1998?
El estándar ISO/IEC/IEEE 29148 sustituyó y dejó obsoletos a los estándares IEEE 830-1998, IEEE 1233-1998 e IEEE 1362-1998; ISO/IEC 25010 es un estándar de modelos de calidad, no de requerimientos. (ISO/IEC/IEEE 29148, Systems and software engineering — Life cycle processes — Requirements engineering)
19. El SWEBOK distingue entre requerimientos de producto y requerimientos de proceso dentro del área de conocimiento de Requerimientos de Software. Un enunciado que exige que el equipo de desarrollo utilice un lenguaje de programación específico durante la construcción del sistema corresponde, según esa distinción, a un requerimiento de:
El SWEBOK define al requerimiento de proceso como una restricción sobre el desarrollo del software, como el uso obligatorio de cierto lenguaje, a diferencia del requerimiento de producto, que es una necesidad del software resultante. (SWEBOK V3.0, Software Requirements Knowledge Area, 1.2 Product and Process Requirements)
20. ¿Por qué es importante que los requerimientos no funcionales se expresen de forma cuantitativa mediante métricas?
Expresar los requerimientos no funcionales con métricas cuantificables, como transacciones por segundo o tasa de fallas, permite verificar objetivamente si el sistema los cumple, en lugar de dejarlos como afirmaciones subjetivas. (Ian Sommerville, Ingeniería de Software, tabla de métricas para requerimientos no funcionales)
21. ¿Cuántas características de calidad define el modelo de calidad del producto de ISO/IEC 25010:2011 como base de los requerimientos no funcionales?
La norma ISO/IEC 25010:2011 define ocho características de calidad del producto; la opción 1 corresponde en realidad al modelo anterior ISO/IEC 9126, con seis características. (ISO/IEC 25010:2011, Systems and software Quality Requirements and Evaluation (SQuaRE) — System and software quality models)
22. Según Karl Wiegers, ¿qué describen los requerimientos de negocio dentro de un proyecto de software?
Wiegers describe a los requerimientos de negocio como los objetivos de alto nivel de la organización o del cliente y el beneficio esperado del sistema, es decir, responden al 'porqué' del proyecto, por encima de los requerimientos de usuario y del sistema. (Karl Wiegers, Software Requirements (Microsoft Press), cap. Tipos de requisitos)
23. Un cliente indica que el nuevo sistema debe construirse utilizando la plataforma de nube que la empresa ya tiene contratada. ¿Cómo se clasifica este tipo de enunciado dentro de la ingeniería de requerimientos?
Exigir el uso de una plataforma de nube específica no describe una función del sistema, sino que limita las opciones de diseño o implementación de la solución, lo que corresponde a la definición de restricción (constraint). (Karl Wiegers, Software Requirements; ISO/IEC/IEEE 29148, definición de constraint)
24. ¿Cuántas características de calidad conforman el modelo de calidad de producto establecido por la norma ISO/IEC 25010:2011, utilizado como base para especificar requerimientos no funcionales?
ISO/IEC 25010:2011 define ocho características: adecuación funcional, eficiencia de desempeño, compatibilidad, usabilidad, fiabilidad, seguridad, mantenibilidad y portabilidad. (ISO/IEC 25010:2011, Systems and software Quality Requirements and Evaluation (SQuaRE))
25. Dentro del modelo de calidad ISO/IEC 25010, ¿qué característica se refiere a la facilidad con la que un producto de software puede ser modificado, corregido o adaptado sin introducir defectos nuevos?
La mantenibilidad agrupa la capacidad de análisis, de modificación y de prueba del software; la usabilidad se refiere a la facilidad de uso, no a la facilidad de modificar el código. (ISO/IEC 25010:2011, característica Mantenibilidad.)
26. Un analista especifica que 'un usuario sin experiencia previa debe poder completar el proceso de registro en menos de tres minutos sin recibir ayuda externa.' Este requerimiento pertenece principalmente al atributo de calidad de:
La facilidad de aprendizaje y de uso sin asistencia es una métrica típica de usabilidad; aunque se menciona un tiempo, lo que se evalúa es la curva de aprendizaje del usuario y no la velocidad de procesamiento del sistema. (Ian Sommerville, Ingeniería de Software, tabla de métricas para requerimientos no funcionales.)
27. Un requerimiento establece: 'El sistema debe procesar un mínimo de 500 transacciones por segundo con un tiempo de respuesta promedio no mayor a 200 milisegundos bajo carga máxima.' Este requerimiento se clasifica como un atributo de calidad de:
Las métricas de transacciones por segundo y tiempo de respuesta corresponden a la eficiencia de desempeño; la fiabilidad se mide en términos de disponibilidad o tasa de fallas, no de velocidad de procesamiento. (Ian Sommerville, tabla de métricas (transacciones/segundo); ISO/IEC 25010, eficiencia de desempeño.)
28. De acuerdo con Sommerville, siempre que sea posible los requerimientos no funcionales deben expresarse de forma:
Sommerville recomienda cuantificar los requerimientos no funcionales con métricas objetivas, como transacciones por segundo o tasa de fallas, para poder verificarlos objetivamente. (Ian Sommerville, tabla de métricas para requerimientos no funcionales.)
29. Una empresa exige que, ante un defecto identificado en el módulo de cálculo de impuestos de su sistema de nómina, un programador pueda corregirlo en un máximo de cuatro horas hábiles sin afectar otros módulos. Este requerimiento corresponde al atributo de calidad de:
La rapidez y el aislamiento con que puede corregirse un defecto son indicadores de mantenibilidad, específicamente de la capacidad de análisis y de modificación del software. (ISO/IEC 25010:2011, característica Mantenibilidad.)
30. ¿Cuál de las siguientes opciones NO es un atributo de calidad considerado por el modelo de calidad de producto de la norma ISO/IEC 25010?
La trazabilidad es una característica de una buena especificación de requerimientos según IEEE 830, no un atributo de calidad del producto; ISO/IEC 25010 sí incluye portabilidad, seguridad y usabilidad. (ISO/IEC 25010:2011 vs. IEEE Std 830-1998, sección 4.3.)
31. En la clasificación de Sommerville, los atributos de rendimiento, fiabilidad, usabilidad, eficiencia y portabilidad forman parte del grupo de requerimientos no funcionales denominado:
Sommerville agrupa estos atributos como requerimientos de producto, pues especifican o restringen el comportamiento en ejecución del software; los organizacionales derivan de políticas y los externos de factores fuera del sistema. (Ian Sommerville, clasificación de requerimientos no funcionales.)
32. 'El sistema debe desarrollarse utilizando exclusivamente el motor de base de datos PostgreSQL, por política tecnológica de la organización.' Este enunciado se clasifica principalmente como:
Una restricción limita las opciones de diseño o implementación, como el motor de base de datos obligatorio, sin describir una función ni un atributo de calidad medible del sistema. (Karl Wiegers, Software Requirements; ISO/IEC/IEEE 29148, definición de constraint.)
33. Un requerimiento indica que 'el sistema debe verificar la identidad del usuario mediante autenticación de dos factores, cifrar las comunicaciones con el protocolo TLS 1.2 o superior, y bloquear la cuenta tras cinco intentos fallidos de inicio de sesión.' Estas tres condiciones en conjunto corresponden principalmente al atributo de calidad de:
La autenticación robusta, el cifrado de comunicaciones y el bloqueo de cuentas son mecanismos de protección contra accesos no autorizados, característicos del atributo de seguridad. (ISO/IEC 25010:2011, característica Seguridad.)
34. Dentro de la sección de requerimientos de interfaz externa de una Especificación de Requerimientos de Software (SRS) basada en IEEE 830, ¿cuál de las siguientes es una de las cuatro subcategorías reconocidas por el estándar?
IEEE 830 divide los requerimientos de interfaz externa en interfaces de usuario, de hardware, de software y de comunicaciones; el desempeño, el negocio y la calidad se documentan en otras secciones de la SRS. (IEEE Std 830-1998, sección 3.1 Requerimientos de interfaces externas.)
35. Los requerimientos de interfaz externa de un sistema de software describen principalmente:
Estos requerimientos especifican cómo el software intercambia información con elementos externos al propio sistema; los objetivos estratégicos corresponden a requerimientos de negocio y las normas éticas a requerimientos externos regulatorios. (IEEE Std 830-1998, sección 3.1.)