Metodología para la elicitación de requisitos

Metodología para la elicitación de requisitos
Información sobre la plantilla
Metodología elicitación.png

Metodología para la elicitación de requisitos. La elicitación de requisitos es la actividad que se considera como el primer paso en un proceso de ingeniería de requisitos. Debido a que existen muchas técnicas disponibles para elicitar requisitos, es necesario contar con un método que sirva de guía para su aplicación, teniendo en cuenta que, cada método tiene fortalezas y debilidades y que además está orientado hacia un dominio específico .

Objetivo

El objetivo fundamental en la aplicación de esta metodología es la definición de las tareas a realizar, los productos que se van a obtener y las técnicas a emplear durante el desarrollo de la elicitación de requisitos en la fase de ingeniería de requisitos del desarrollo de un sistema o software.

Esta metodología se basa en la creación de dos tipo de productos: los productos entregables que no son más que los que se le hace una entrega oficial al cliente dada una fecha previamente acordada; y los productos no entregables que son los que se generan internos al desarrollo del proceso y no se entregan al cliente.

Funciones

Tareas de elicitación de requisitos

La ingeniería de software es más que programar y por su parte la ingeniería de requerimientos tine que ver con aquellas actividades en pos de entender las necesidades de los clientes y éstas llevarlas a un conjunto de sentencias precisas y no ambiguas. Por esta razón es que se emplean metodologías para llevar a cabo los procesos relacionados con la elicitación de requisitos y con ellas traen aparejados un cúmulo de tareas recomendadas para obtener los productos que se necesitan.

  • Tarea 1: Obtener información sobre el dominio del problema y el sistema actual: Esta tarea puede ser opcional y tiene como objetivo fundamental conocer el dominio del problema y los contextos organizacional y operacional, o sea, la situación actual. Se recomienda la construcción de un glosario de términos y un modelado del sistema actual.
  • Tarea 2: Preparar y realizar las reuniones de elicitación/negociación: De acuerdo a la información recopilada anteriormente es necesario identificar a los usuarios participantes con el propósito de conocer las necesidades de los clientes y resolver, por parte del equipo de desarrollo, los posibles conflictos. Se recomiendan técnicas de elicitación de requisitos y técnicas de negociación como WinWin.
  • Tarea 3: Identificar/revisar los objetivos del sistema: A partir de la tarea anterior se identifican los objetivos a alcanzar una vez que el software a desarrollar esté en explotación y revisar los objetivos identificados, en caso de haber conflictos . Se recomiendan análisis de factores críticos o alguna técnica similar de identificación de objetivos y la plantilla para especificar los objetivos del sistema .
  • Tarea 4: Identificar/revisar los requisitos de información : A partir de la información de las tareas 1 y 2, y los objetivos identificados en la 3, en esta tarea se debe identificar, o revisar si existen conflictos, qué información es relevante para el cliente y se deberá gestionar y almacenar el sistema software a desarrollar, así como qué restricciones o reglas de negocio debe cumplir dicha información . Se recomiendan: la plantilla para requisitos de almacenamiento de información y la plantilla para requisitos de restricciones de información.
  • Tarea 5: Identificar/revisar los requisitos funcionales : De acuerdo a las tareas anteriores se debe identificar los actores que interactuarán con el sistema, los requisitos funcionales, expresados en casos de uso así como su especificación correspondiente y su revisión en caso de conflictos. Se recomiendan técnicas como: casos de uso, plantillas para actores, plantillas para casos de uso y plantillas para requisitos funcionales.
  • Tarea 6: Identificar/revisar los requisitos no funcionales : Con la información obtenida anteriormente se deben identificar y revisar los requisitos no funcionales del sistema software a desarrollar. Se recomiendan técnicas como la plantilla para requisitos no funcionales.

Técnicas

La metodología para la elicitación de requerimientos de software describe algunas de las técnicas que se proponen para obtener los productos de las tareas que se han descrito. Las que se usan con más frecuencia son: las entrevistas, el Joint Application Development (JAD) o Desarrollo Conjunto de Aplicaciones, el Brainstorming o tormenta de ideas y la utilización de escenarios, más conocidos como casos de uso.

Existen algunas a las que se le adicionan otras complementarias como la observación in situ, el estudio de documentación, los cuestionarios, la inmersión en el negocio del cliente o haciendo que los ingenieros de requisitos sean aprendices del cliente.

Entrevistas

Es la técnica de elicitación más utilizada, y de hecho es prácticamente inevitable en cualquier proceso de desarrollo de un sistema software ya que es una de las formas de comunicación más natural entre personas. En esta técnica se pueden identificar tres fases: preparación, realización y análisis por lo que no deben improvisarse, o sea debe tener una preparación previa a través de tareas como:

  1. Estudiar el dominio del problema.
  2. Seleccionar a las personas a las que se va a entrevistar.
  3. Determinar el objetivo y contenido de las entrevistas.
  4. Planificar las entrevistas.

Join Application Development (JAD)

La técnica denominada JAD, desarrollada por IBM en 1977, es una alternativa a las entrevistas individuales. Con la aplicación de esta técnica se ayuda a los clientes y usuarios a formular problemas y explorar posibles soluciones, involucrándolos y haciéndolos sentirse partícipes del desarrollo.

Se basa en cuatro principios: dinámica de grupo, el uso de ayudas visuales para mejorar la comunicación (diagramas, transparencias, multimedia, herramientas CASE, etc.), mantener un proceso organizado y racional y una filosofía de documentación WYSIWYG (What You See Is What You Get, lo que se ve es lo que se obtiene), por la que durante las reuniones se trabaja directamente sobre los documentos a generar.

Dentro de la técnica del JAD se distinguen tres fases:

  1. Adaptación
  2. Celebración de las sesiones JAD (presentación, definir objetivos y requisitos , delimitar el ámbito del sistema, documentar temas abiertos, concluir la sesión).
  3. Conclusión (completar la documentación, revisar la documentación, validar la documentación).

Brainstorming

El brainstorming o tormenta de ideas es una técnica de reuniones en grupo cuyo objetivo es la generación de ideas en un ambiente libre de críticas o juicios. Las sesiones suelen estar formadas por un número de cuatro a diez participantes. Puede ayudar a generar una gran variedad de vistas del problema y a formularlo de diferentes formas. Es muy fácil de aprender y requiere poca organización.

En el brainstorming se distinguen las siguientes fases:

  1. Preparación.
  2. Generación.
  3. Consolidación (revisar, descartar y priorizar ideas).
  4. Documentación.

Utilización de escenarios o casos de uso

Un caso de uso es la descripción de una secuencia de actividades entre el sistema y uno o más actores. Presentan ciertas ventajas ya que facilitan la elicitación de requisitos y son fácilmente comprensibles por los clientes y usuarios. Para su descripción se proponen plantillas, en las que se describen las interacciones usando un lenguaje natural.

Fuentes

  • Eduardo Fernández-Medina y Mario Piattini. "Elicitación de Requisitos de Seguridad en Procesos de Negocio". Departamento de Tecnologías y Sistemas de Información, Universidad de Castilla-La Mancha, Ciudad Real, España.
  • Amador Durán Toro y Beatriz Bernárdez Jiménez. "Metodología para la Elicitación de Requisitos de Sistemas Software". Departamento de Lenguajes y Sistemas Informáticos, Escuela Técnica Superior de Ingeniería Informática , Sevilla. Octubre de 2001 . Informe Técnico LSI–2000–10 (revisado).
  • Pressman, Roger S. Ingeniería del Software. Un enfoque Práctico(Quinta Edición). Madrid: Concepción Femández Madrid, 2002. 0-07-709677-0.