Ingeniería de Requerimientos

Definición

Un requerimiento describe una condición o capacidad que debe cumplir un sistema para satisfacer un propósito específico. La definición de requerimientos se centra en el QUÉ, mientras que el diseño se enfoca en el CÓMO.

Documentos Clave

  • Definición de requerimientos: Escrita en lenguaje del cliente, lista las expectativas del sistema.
  • Especificación de requerimientos: Reformulación técnica de la definición, dirigida al equipo de desarrollo.

Ambos documentos deben estar alineados para asegurar una visión unificada entre cliente y desarrollador.

Tipos de Requerimientos

1. Funcionales

Describen las funciones y servicios que el sistema debe proporcionar. Se dividen en:

  • Requerimientos de usuario: Expresados de forma general.
  • Requerimientos del sistema: Detallan la función, entradas y salidas.

2. No Funcionales

Describen propiedades emergentes del sistema, como la fiabilidad, el rendimiento y la capacidad. Se clasifican en:

  • Del producto: Comportamiento del producto (rendimiento, memoria, portabilidad, usabilidad).
  • Organizacionales: Derivados de políticas y procedimientos del cliente y desarrollador (estándares, lenguajes de programación).
  • Externos: Factores externos al sistema (interoperabilidad, legales, éticos).

3. De Dominio

Específicos del dominio de la aplicación, se expresan en lenguaje técnico del mismo.

Propósitos de los Requerimientos

  • Facilitar la comunicación entre cliente y desarrollador.
  • Guiar el diseño del sistema.
  • Establecer criterios de prueba.

Características de los Requerimientos

  • Correctos: Libres de errores.
  • Consistentes: Sin contradicciones internas.
  • Completos: Cubren todos los escenarios posibles.
  • Realistas: Factibles de implementar.
  • Necesarios: Relevantes para el problema.
  • Verificables: Posibilidad de demostrar su cumplimiento.
  • Rastreables: Vinculables a su origen y a su implementación.

El Proceso de Ingeniería de Requerimientos (IR)

Comprende todas las actividades para crear y mantener la documentación de requerimientos.

1. Estudio de Factibilidad

Descripción resumida del sistema y su uso. Determina la viabilidad del proyecto y propone ajustes a cronogramas y presupuestos.

2. Obtención y Análisis de Requerimientos

Colaboración con usuarios y clientes para identificar y analizar sus necesidades. Se deben abordar los siguientes desafíos:

  • Usuarios con dificultad para expresar sus necesidades.
  • Diversidad de opiniones y prioridades.
  • Influencia de factores políticos.
  • Evolución de los requerimientos a lo largo del tiempo.

Fases de la Obtención y Análisis

  1. Comprensión del dominio: El analista debe comprender el contexto de la aplicación.
  2. Recolección de requerimientos: Interacción con el cliente para descubrir sus necesidades.
  3. Clasificación: Organización coherente de los requerimientos recopilados.
  4. Resolución de conflictos: Abordaje de las discrepancias entre stakeholders.
  5. Priorización: Clasificación de los requerimientos por importancia:
    • Indispensables.
    • Deseables pero no esenciales.
    • Opcionales.
  6. Verificación de requerimientos: Asegurar la completitud, consistencia y precisión.

3. Especificación de Requerimientos

Formalización de los requerimientos utilizando diferentes técnicas:

  • Lenguaje Natural: Comprensible pero ambiguo.
  • Notaciones Especiales: Precisas pero requieren entrenamiento.
  • Descripciones Estáticas: Modelan entidades y atributos, pero no el comportamiento dinámico.
  • Descripciones Dinámicas: Representan estados, transiciones y eventos.

4. Validación de Requerimientos

Verificación de la alineación entre la especificación y las necesidades del cliente. Se realizan las siguientes comprobaciones:

  • Validez: Correspondencia con las necesidades del cliente.
  • Consistencia: Ausencia de contradicciones.
  • Realismo: Factibilidad técnica y económica.
  • Verificabilidad: Posibilidad de demostrar su cumplimiento mediante pruebas.

La verificación de requerimientos no funcionales puede ser compleja y requiere métricas cuantitativas.

Modelado del Sistema

Técnicas para representar el sistema y sus requerimientos:

  1. Tablas de decisión: Describen condiciones y acciones asociadas.
  2. Diagramas de transición de estados: Modelan estados, eventos y transiciones.
  3. Redes de Petri: Representan concurrencia y sincronización en sistemas paralelos.
  4. Diagramas de flujo de datos (DFD): Visualizan el flujo de información.
  5. Diagramas de casos de uso UML: Describen interacciones entre usuarios y el sistema.

Elección de la Técnica de Especificación

Se debe considerar:

  • Características del proyecto.
  • Preferencias del equipo de desarrollo.
  • Requerimientos del cliente.

Es común combinar diferentes técnicas para una representación completa.

Técnicas de Obtención y Análisis de Requerimientos

  1. Investigación de antecedentes: Revisión de información existente (documentación, estudios, etc.).
  2. Entrevistas individuales/grupales: Recopilación de información directamente de los stakeholders.
  3. Encuestas: Cuestionarios para recopilar información de un grupo amplio.
  4. Tormenta de ideas: Generación de ideas en grupo de forma creativa.
  5. Casos de uso: Descripción de interacciones típicas entre usuarios y el sistema.
  6. Prototipado: Creación de una versión simplificada del sistema para validar requerimientos.

Validación de Requerimientos

Involucra dos pasos:

  1. Asegurar la trazabilidad entre especificación y definición de requerimientos.
  2. Verificar la completitud de la trazabilidad en ambos sentidos.

Revisión de Requerimientos

Reunión con representantes del cliente y del equipo de desarrollo para:

  • Revisar los objetivos del sistema.
  • Asegurar la alineación entre objetivos y requerimientos.
  • Evaluar el ambiente de operación e interfaces.
  • Identificar y analizar riesgos.

Medición de Requerimientos

Se enfoca en tres áreas:

  • Producto.
  • Proceso.
  • Recursos.

Escala de Clasificación de Requerimientos

  1. Comprensión total.
  2. Elementos nuevos pero familiares.
  3. Elementos nuevos que requieren esfuerzo de diseño.
  4. Dificultad para comprender y diseñar.
  5. Comprensión nula.