Contexto


¿Alguna vez has tenido que dar indicaciones a un carpintero para que construya un mueble y al final éste realizó algo muy diferente a lo que esperabas?

¿Has contratado a un albañil para que haga alguna adecuación en tu casa y no ha construido lo que tenías en mente?

How Projects Really Work (version 1.5) Imagen obtenida de http://projectcartoon.com/pdf.php?CartoonID=2&PaperSize=Letter Sólo para fines educativos.

Estas son situaciones muy comunes en donde los requerimientos del cliente no son entendidos de forma adecuada, por un simple problema de comunicación; ya sea porque el cliente no supo explicarse o porque hubo un error en la interpretación de la información.

En los proyectos de desarrollo de software también surgen problemas de interpretación de requerimientos que están relacionados con el proceso natural de comunicación: El emisor envía un mensaje al receptor, sin embargo el receptor no siempre capta de manera íntegra el mensaje o cree haber entendido el mensaje.

En este tema revisarás el proceso general de la ingeniería de requerimientos, que es una disciplina que se encarga de recabar las necesidades y solicitudes de los usuarios para moldear el software que está por construirse.

Explicación


3.1 Proceso de requerimientos

Como cualquier proceso de construcción de una casa o edificio, es importante establecer claramente qué es lo que se necesita construir y evitar así malos entendidos. El desarrollo del software es igualmente una actividad que debe seguir ciertos pasos de forma sistemática que aseguren el éxito del proyecto. Para ello te puedes apoyar en la ingeniería de requerimientos.

El espectro amplio de tareas y técnicas que llevan a entender los requerimientos se denomina “ingeniería de requerimientos” (Pressman, 2010).

La ingeniería de requerimientos permite establecer una clara comunicación entre los deseos y necesidades del cliente y el grupo de personas que hará realidad el producto de software. Este proceso de comunicación será de vital importancia para el proyecto y tendrá un impacto directo en la calidad del producto.

Las tareas que incluye la ingeniería de requerimiento son las siguientes (2010, Pressman):

Haz clic en cada tarea para revisar su descripción


3.2 Proyecto de análisis de requerimientos

Llevar a cabo un análisis de requerimientos como un proyecto es similar a utilizar la metodología de la administración de proyectos (Project Management). Por lo tanto es importante determinar el tiempo, los recursos y el calendario de actividades que se llevarán a cabo, así como asignar responsables.

Definición del alcance

Como todo proyecto, es necesario que se establezca desde un principio el alcance del análisis, que depende de la estimación del tamaño del software. No sería el mismo alcance tener que involucrar a las áreas con recursos humanos y contabilidad para hacer un sistema de nóminas que un sistema de administración de los procesos de negocio, en el que intervienen áreas como ventas, servicio a clientes, entrega de servicio, aseguramiento de la calidad, finanzas, etc.

Participación del personal

A partir de la definición del alcance se puede determinar la necesidad de la participación del personal clave (stakeholders),  por lo que es recomendable que se seleccionen las áreas involucradas, los puntos de contacto y el personal que participará en el proyecto. Esto es particularmente útil ya que, como verás más adelante, se requiere utilizar herramientas de acopio de información como entrevistas, cuestionarios y observaciones de campo para el personal que tiene el dominio de los procesos operativos.

Sin la participación activa de este personal en el análisis de requerimientos se pone en riesgo la documentación de las verdaderas necesidades y solicitudes del usuario, y el software que se produce distará de los resultados esperados.

Por lo general, todos los usuarios reconocen las ventajas de tener un sistema que les ayude en sus actividades diarias, sin embargo en la práctica pocos se involucran activamente o se mantienen motivados a sacar el mejor provecho del análisis de requerimientos; más aún, los mandos medios y altos delegan la responsabilidad de tomar decisiones importantes sobre el sistema, perdiendo así una perspectiva gerencial del proceso.

Calendarización de actividades

El proyecto del análisis de requerimientos debe llevar un calendario que contenga la lista de actividades, el tiempo que se le dedicará a cada una, el responsable asignado y los posibles recursos (material o presupuesto).
Esto es importante aclararlo desde la planeación del proyecto, sobre todo cuando es necesario  moverse a diferentes ciudades para recabar información.

Seguimiento e informes

Las actividades del plan de análisis de requerimientos deben ser monitoreadas con el principal objetivo de verificar si se están cumpliendo las fechas del calendario, evaluar la participación de los involucrados e informar al cliente cualquier riesgo de incumplimiento. Es recomendable establecer una reunión periódica con el cliente, que lo mantenga informado de los avances del proceso de análisis de requerimientos; además, obtener el apoyo que necesita el equipo de analistas cuando se solicite.

3.3 Habilidades del ingeniero de requerimientos

Todo ingeniero de requerimientos debe contar con algunas características que le ayudarán en su labor. Según Pohl y Rupp (2011) el ingeniero de requerimientos debe contar con una función principal y 7 habilidades que se explican a continuación:

Rol principal: un ingeniero de requerimientos será el puente entre los stakeholders y el equipo de desarrollo de software. En sus hombros tendrá la responsabilidad de traducir la información de requerimientos a un documento de especificaciones, que exprese de forma fidedigna toda la información del dominio del usuario dentro del contexto en el que se desarrollará el sistema.

Las 7 habilidades de todo buen ingeniero de requerimientos son las siguientes:

Haz clic en cada habilidad para revisar su descripción

Cierre


Un ingeniero de requerimientos permite documentar los deseos del cliente, de manera que se asegure que el software construido cubra verdaderamente sus necesidades; de otra forma sería como el carpintero o el albañil que intenta entregar un producto que no le interesa al cliente. Realizar ajustes posteriores a la entrega trae nuevos problemas y mayores gastos.

Para evitar esas situaciones es necesario establecer un proyecto de ingeniería de software, involucrando la participación activa de los stakeholders. Es una tarea que implica tiempo, análisis de problemas, documentación de procesos, toma de decisiones y sobre todo una actitud propositiva.

Es natural  que en todos estos proyectos surjan desacuerdos y errores en la comunicación, porque es un trabajo con personas con diferentes antecedentes, puntos de vistas e intereses; sin embargo, las habilidades del ingeniero en requerimientos ayudarán en gran medida a solucionar y minimizar el impacto de estos problemas.

Checkpoint


Asegúrate de poder:

  • Enlistar las tareas que se llevan a cabo en la ingeniería de requerimientos para recopilar la información que podrá ser utilizada para especificar las características del software.
  • Comprender los aspectos más importantes de un proyecto de ingeniería de requerimientos que permita administrar, dirigir y controlar las tareas del análisis del software.
  • Reconocer las habilidades que debe tener un ingeniero de requerimientos para lograr llevar a cabo el análisis del desarrollo de software.

Referencias


  • Pohl, K. y Rupp, C. (2011). Requirements Engineering Fundamentals. EE.UU: Rocky Nook.
  • Pressman, R. (2010). Ingeniería de Software. Un enfoque práctico (7ª ed.) México: McGraw Hill.