Contexto


Anna Lucía es el ingeniero de requerimientos responsable de la documentación de 450 requerimientos para el desarrollo de un sistema. Finalmente el documento de especificaciones logró ser validado y aprobado por los stakeholders y el equipo de desarrollo, tras una serie de sesiones en las que fue necesario negociar requerimientos en conflicto.

Una semana después de la aprobación, el gerente de operaciones la ha contactado por teléfono para proponerle algunos requerimientos extras que servirán para procesar órdenes de los proveedores de forma más eficiente.

Por su parte, la gerente de compras le ha solicitado por correo algunas modificaciones a los requerimientos originales del documento de especificaciones aprobado que tienen que ver con la selección de proveedores y envío de solicitudes de cotización de forma automática.

Ambos gerentes aseguran que son cambios mínimos que no impactarán al proyecto, ni en recursos, ni en tiempo. Sin embargo, al revisarlos Anna Lucía observa que implican nuevas funciones y los cambios sugeridos podrían impactar a otros requerimientos que pasaron por un proceso arduo de negociaciones.

  • ¿Qué debe hacer Anna Lucía?,
  • ¿Debe indicarle a los gerentes que una vez aprobado el documento no se pueden hacer modificaciones?
  • ¿Cómo debería poner orden en la forma de solicitar cambios?
  • ¿Debería solicitar otra opinión para evaluar el verdadero impacto de esas modificaciones?

Explicación


15.1 Cambios en los requerimientos

Los requerimientos nunca son escritos en piedra, incluso después de pasar por un extenso proceso de validación que haya concluido con la firma del documento de especificaciones. Es muy probable que el cliente desee realizar cambios o agregar nuevas funciones, principalmente debido a que las necesidades van cambiando con el tiempo (sobre todo en sistemas grandes que tardan en desarrollarse algunos años), no todos los errores a los requerimientos fueron detectados a tiempo, o bien, porque existe algún factor externo a la organización que le obliga realizar ciertos ajustes.

Rara vez se encuentran todos los problemas de requisitos durante el proceso de validación de requerimientos, y es inevitable que haya cambios a los requisitos para corregir las omisiones y malentendidos después de que el documento de requerimientos ha sido acordado Sommerville (2011).

En el siguiente diagrama, Sommerville (2011), muestra en bloques los diferentes momentos de la ingeniería de requerimientos en donde los stakeholders adquieren un entendimiento diferente del problema que desean solucionar. Conforme pasa el tiempo, tanto el usuario como el equipo desarrollador reconocen mejor las necesidades verdaderas que el sistema debe cubrir. Esto provoca cambios inevitables a los requerimientos iniciales. No aceptar ninguna modificación podría generar que se desarrolle un software inútil y corregirlo después de haberlo implementado será todavía más costoso.

Fuente: Sommerville, I. (2011). Software Engineering (9ª ed.). EE. UU.: Pearson.

No todos los cambios deben ser aceptados a ciegas. Cada solicitud de cambio de ser analizada con detenimiento antes de aceptarse, debido principalmente a que pueden traer impactos considerables al proyecto (tiempo, costo, alcance o calidad) que finalmente terminen por convertirlo en un fracaso.

Razones de los cambios:

Algunas de las razones por las cuales los cambios en los requerimientos son inevitables:

  1. Las condiciones del negocio cambian constantemente debido principalmente a que el cliente final va cambiando sus exigencias y expectativas de los productos o servicios.
  2. Cambios en la tecnología en cuanto a nuevos dispositivos electrónicos, nuevas capacidades, acceso a Internet e interfaces gráficas.
  3. Legislaciones impuestas por entidades gubernamentales con carácter de obligatorio que provocan cambios en los procesos internos de las organizaciones.
  4. Limitaciones en el presupuesto de los proyectos de desarrollo.
  5. Cambios en los objetivos estratégicos de las empresas.

Evolución de los requerimientos:

En opinión de Sommerville (2008), existen dos clases de requerimientos desde la perspectiva de su evolución:

Clase

Descripción

Ejemplo

Duraderos

Son aquellos que describen funciones principales de la organización y pertenecen al dominio del sistema, por lo que son relativamente estables.

Los requerimientos relacionados con un sistema para administrar un hotel incluirán huéspedes, reservación de habitaciones, check in/check out, entre otros; rara vez existirán cambios al proceso general que los describe.

Volátiles

Aquellos que los cambios son muy comunes. Piensa por ejemplo en un sistema de contabilidad.

Las reglas que impone el SAT (Servicio de Administración Tributaria) para el cálculo de impuestos hacen que los contadores deban ajustar sus procesos cada vez que se publica un cambio en el Diario Oficial de la Federación y esto suelen ser muy recurrentes durante el año.

Para Harker et al. (1993) dentro de los requerimientos volátiles se encuentran los siguientes:

Clase

Descripción

Mutables

Requerimientos que cambian debido modificaciones en el entorno de la organización.

Emergentes

Son requerimientos nuevos que el cliente solicita porque al analizar sus necesidades comprende mejor cuál es su problema.

Consecuentes

Implementar un sistema de información puede provocar cambios en los procesos internos a la organización y abre nuevas posibilidades de realizar el mismo trabajo, lo que conduce a generar nuevos requerimientos.

De compatibilidad

Algunos requerimientos dependen de otros sistemas. Si estos sistemas cambian pueden provocar nuevos ajustes para mantener la compatibilidad.

15.2 Solicitud de cambios

Ante esta posibilidad de cambios a los requerimientos iniciales del proyecto de sistema, surge la necesidad de tener un control sobre aquellas modificaciones que se aceptan o se rechazan, es decir, una administración de cambios. No todos se pueden aceptar, tampoco es posible impedirlos. Es mejor establecer un mecanismo adecuado para mantener la inspección y seguimiento a los cambios que vayan surgiendo.

Fuente: Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson.

Gestión del cambio:

Si los cambios son inevitables y pueden surgir en cualquier etapa del desarrollo del sistema, lo mejor que puedes hacer es prepararte para administrarlos de la mejor manera. Esto implica establecer un proceso formal en el que se puedan solicitar, analizar e implementar.

“La ventaja de utilizar un proceso formal para gestionar el cambio es que todos los cambios propuestos son tratados de forma consistente y que los cambios en el documento de requerimientos se hacen de forma controlada”. Sommerville (2011)

Sommerville (2011) propone tres pasos para establecer este proceso formal:

  1. Análisis del problema y especificación del cambio. Cualquier persona involucrada en el proyecto puede proponer un cambio a un requerimiento, siempre y cuando lo justifique. Para ello debe llenar una solicitud de cambio, esta información será estudiada para un posterior análisis de factibilidad.
  2. Análisis del cambio y cálculo de costos. La solicitud de cambio se analiza por el ingeniero de requerimientos y las personas que posiblemente se vean afectadas. En este paso se realiza un rastreo de los requerimientos relacionados, se analizan los posibles impactos directos o indirectos y se hace un cálculo del costo de hacer las modificaciones. Con este análisis se determina si es posible implementar el cambio o si se requerirá de un proceso de negociaciones.
  3. Implementación del cambio. Cuando los cambios son factibles, se realizan los ajustes a la documentación y, si aplica, a las etapas del desarrollo que se vean impactadas.

Formato de solicitud de cambios

Llenar una solicitud de cambios debe ser un proceso sencillo y conocido por todos los stakeholders. Tiene dos objetivos, el primero tiene que ver con obligar al solicitante a analizar el cambio que está solicitando. Es común que soliciten cambios triviales o sin reflexionar y el acto de llenar la solicitud permite que lo describan mejor. El segundo objetivo es contar con un repositorio donde se ubique toda la información de los cambios solicitados.

La forma incluye los siguientes datos:

Observa que aparecen dos secciones, la primera es llenada por el solicitante y la segunda por el comité evaluador. Cada solicitud debe tener un identificador único con el que se le pueda dar seguimiento y respuesta.

Es recomendable utilizar un formato electrónico que llene automáticamente algunos datos, como el número de solicitud y la fecha, y precargue los números de requerimientos y su descripción. Esto permitirá evitar errores de captura y asegura la trazabilidad de los cambios. La sección de la resolución deberá estar activa sólo para el comité evaluador.

En algunos modelos de desarrollo ágil, la solicitud de cambios se realiza dentro de la junta semanal de seguimiento, el cambio es analizado y priorizado en la misma reunión. Si su prioridad es alta podría desplazar a otros requerimientos que serían atendidos en esa semana.

15.3 Análisis de impacto

Algunos cambios serán muy simples y no tendrán impacto en el proyecto, otros, en cambio, provocarán posibles modificaciones en el documento de especificaciones, retrabajo en el diseño, modificaciones al código y repetir las pruebas. El análisis del impacto es indispensable porque hay alteraciones que podrían poner en riesgo el resultado mismo del proyecto.

Para evaluar el impacto de una solicitud de cambio, se debe crear un comité evaluador, que será responsable de considerar los siguientes elementos:

Elementos a considerar para evaluar el impacto

  • Razón del esfuerzo y los beneficios del cambio propuesto.
  • Efectos negativos del cambio propuesto.
  • Daños colaterales a requerimientos no funcionales que podrían surgir al aceptar el cambio, como rendimiento, velocidad, capacidad o calidad.
  • Consecuencias de no realizar el cambio.
  • Factibilidad del cambio con los recursos actuales (restricciones presupuestales, habilidades del personal y tiempo necesario).
  • Nuevas herramientas para implementar y probar el cambio.
  • Necesidad de crear prototipos o simulaciones para revisar la idoneidad del cambio.
  • Cantidad de esfuerzo ya realizado que podría perderse.
  • Impacto a la secuencia de actividades del cronograma y a la fecha original de entrega.

Una vez analizado el impacto este comité dictaminará si aprueba o se rechaza. En caso de ratificarlo deberá asignarle una prioridad dentro de la lista de cambios sugeridos y se asignará a un proyecto que gestione todos los cambios aprobados.

Fuente: Pohl, K. y Rupp, C. (2011). Requirements Engineering Fundamentals. EE. UU.: Rocky Nook.

Una vez implementado el cambio, el comité validará los costos y beneficios que se habían estimado en comparación con los reales, con el objetivo de determinar si efectivamente el proceso de pronosticación es correcto o deben realizarse ajustes para los siguientes cambios o proyectos.

Cierre


Es normal que existan cambios en un proyecto de desarrollo de sistemas, pero no todos los cambios pueden ser aceptados porque se perdería el control del proyecto y se podría poner en riesgo los resultados esperados en el tiempo acordado.

La mejor forma de llevar el control de los cambios solicitados es a través de un proceso estándar que pueda ser utilizado por cualquier persona involucrada. Una opción son las solicitudes, ya sea utilizando un formato específico o una aplicación web que recopile la información de cada cambio en una base de datos. Cada caso debe ser debidamente identificado para efectos de trazabilidad.

Los cambios solicitados deben ser analizados por un grupo de personas llamado comité evaluador, quienes serán responsables de realizar un análisis de impacto y ofrecer una resolución de aceptación o rechazo. Se dará seguimiento a los cambios aprobados hasta tener total certeza que se implementaron adecuadamente.

La gestión de cambios es una actividad que se mantiene vigente en cualquier etapa del desarrollo de sistemas hasta la entrega del proyecto. Cuando se lleva a cabo con orden y control permiten que los proyectos de desarrollo de software sean exitosos.

Checkpoint


Asegúrate de poder:

  • Proponer un proceso formal de solicitudes de cambio que permita recopilar la información necesaria para un posterior análisis.
  • Analizar el impacto de las solicitudes de cambio para una adecuada gestión de solicitudes que apruebe cambios factibles y rechace cambios que impacten negativamente al proyecto.

Glosario


Comité evaluador: Es un grupo de personas que realiza un análisis del impacto a los cambios solicitados. En algunas organizaciones suele ser conformado por personas ajenas al proyecto o incluso asesores externos, con el fin de lograr la mayor objetividad posible.

Impacto: Cualquier situación que afecte positiva o negativamente el resultado de un proyecto.

Referencias


  • Sommerville, I. (2009). Enduring and volatile requirements. Recuperado de
    http://ifs.host.cs.st-andrews.ac.uk/Books/SE9/Web/Requirements/EnduringReq.html
  • Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson.