Agile (Scrum) y la calidad en el desarrollo de software

Por Ing. Daniel Oviedo Suárez ITIL, SMC, CSM, Parasoft DTP 





En la actualidad, las metodologías ágiles que se usan para el desarrollo de software están posicionándose muy fuertemente en las empresas líderes de este sector como, Microsoft, Oracle, SAP, IBM, CA y HP.

Las metodologías ágiles contemplan el desarrollo de software de manera integral, con un énfasis muy marcado en la entrega de valor al cliente y el retorno de la inversión (ROI).


De todas las formas que existen para poder desarrollar software, únicamente de manera colaborativa es como se logra. La colaboración entre el cliente y los desarrolladores es vital e indispensable para la entrega de resultados, siempre se debería fomentar y apoyar.


Es muy importante promover técnicas, procesos y métodos que faciliten esta colaboración. Se debe permitir a los desarrolladores expandir su aportación de valor a los proyectos, y así ofrecer a los clientes transparencia sobre los mismos.



La literatura tradicional sobre desarrollo de software habla del triángulo de hierro, formado por el alcance, costo y duración de un proyecto.

Este triángulo siempre ha presupuesto que la calidad era inherente a los desarrollos, sin embargo, ha resultado ser la variable que más sufre en numerosos proyectos. La gestión tradicional de proyectos fija un alcance a desarrollar en un determinado tiempo con un costo establecido. Con esas tres variables fijas, ante cualquier problema, la respuesta más probable será que la calidad disminuye. Las prisas por terminar en tiempo, por no rebasar el presupuesto o el hecho de cumplir con el contrato firmado no dan muchas opciones. 


NO NEGOCIEMOS LA CALIDAD

Nos encontramos en una época donde la calidad juega un papel de protagonista como una gran ventaja ante nuestros competidores y clientes. Las metodologías ágiles nos están proporcionando un marco de referencia en el que lograr una calidad satisfactoria es parte integral del proceso de desarrollo.

Las herramientas de las cuales pueden hacer uso los desarrolladores son el punto de entrada a un cambio de paradigma que aumentará el estándar de la calidad de cada uno de los desarrollos. Técnicas como el desarrollo guiado por las pruebas (TDD), y aún más otro concepto que se está introduciendo como el desarrollo guiado por las pruebas de aceptación (ATDD), comienzan a ser las piezas fundamentales sobre las que se puede elaborar un producto garantizando en su integridad y calidad durante todo su ciclo de vida.

Se busca integrar el control de la calidad en el propio proceso de desarrollo. Es más, se busca que la única posibilidad de desarrollo sea crear entregables que funcionen correctamente, que cumplan con una definición del producto acabado, que sea un requerimiento participar colaborativa y constantemente con el equipo de desarrollo y el cliente o PO. Se debe integrar en el equipo a cualquier persona involucrada, incluso los Testers, pues comparten el mismo objetivo que el resto del equipo.


Otro objetivo imprescindible es el cumplimiento de las expectativas del cliente. Por ello es el uso de iteraciones de manera incremental, ya que es la base de todas las metodologías ágiles, esto nos permite alinear esas expectativas con el avance del proyecto. Uno de los principios básicos define que el grado de progreso de un proyecto únicamente se puede medir por el software que ya brinda valor al cliente, y que es potencialmente utilizable.



SCRUM

Dentro de todas las diferentes metodologías ágiles, Scrum es la que más se refiere al Project Management, en contraste con las metodologías tradicionales de desarrollo de Software, el rol del Project Manager está distribuido entre los diferentes roles del equipo: El Scrum Master, El Product Owner y el Equipo Scrum.


El Product Owner se enfoca en los aspectos del negocio, incluyendo la prioridad en que el producto se va a ir desarrollando para que éste genere valor. También se encarga de las proyecciones, presupuesto y gestión de los diferentes interesados en el desarrollo del producto.

El Scrum Master se encarga de gestionar el proceso de Scrum, funciona como un facilitador del equipo, y su autoridad se extiende únicamente al proceso. No es responsable por el éxito o el fracaso de los proyectos. Además, ayuda al Product Owner a darle continuidad al progreso del proyecto.

El Equipo Scrum se encarga de construir y/o desarrollar el producto, así como realizar los planes un poco más enfocados a corto plazo durante el Sprint Planning, que posteriormente se actualiza durante el Daily Scrum Meeting. Además, se encarga de realizar las pruebas necesarias para asegurar la calidad y la mejor manera de desarrollar técnicamente el producto.


RETOS

Actualmente la puerta de entrada a las metodologías ágiles de muchas empresas es Scrum. Como ya bien conocemos, se trata de un marco de referencia basado en una colección de procesos para la gestión de proyectos que permite centrarse en la entrega de valor al cliente y la potenciación del equipo para lograr su máxima eficiencia, dentro de un esquema de mejora continua. Por ejemplo, usar Scrum en un desarrollo de software en diferentes países, plantea una serie de retos a superar, que vienen principalmente de la distancia física, una diferencia cultural y horaria. Ésto impacta principalmente en la comunicación entre los miembros del Equipo Scrum, y  las reuniones diarias, que son una de las piezas fundamentales de esta metodología. Es muy destacado el caso de cómo hacer reuniones todos los días cuando el equipo se distribuye en diferentes zonas horarias. Esta dificultad para comunicarse se contempla como uno de los principales retos a superar cuando utilizamos Scrum en un desarrollo global de software.

Algunos otros retos que tiene Scrum son:
  •         Cambio de paradigma: tradicional a ágil
  •          Correcta construcción de las historias de usuario
  •          Documentación en Scrum
  •          Conectar el negocio y la tecnología
  •          Errores del Product Owner
  •          Generación de documentación excesiva
  •          Eliminar desperdicio del Product Backlog
  •          Seleccionar el proyecto piloto adecuado



¿DÓNDE ESTAMOS?

Las metodologías ágiles cuentan ya con una muy amplia literatura e infinidad de horas de experiencia reales de implementación. Existen importantes eventos y capacitaciones a nivel internacional, donde se contrastan herramientas y procesos relacionados con las mejoras en el desarrollo de software y donde se plantean los estándares para la aplicación de estas metodologías. Sin embargo, en México, pareciera que las únicas armas con las que se cuenta para mejorar la calidad del software son las herramientas tecnológicas, impulsadas actualmente por las diferentes marcas en el mercado. Sin duda son una buena referencia para numerosas empresas tanto públicas como privadas, pero para evitar muchos dolores de cabeza y de cartera, establecer siempre desde un inicio los métodos y la gestión de proyectos está ayudando a muchísimas empresas a mejorar la satisfacción del cliente, a incrementar ganancias y reducir costos alrededor del desarrollo de software, y muy importante también, a mejorar la eficiencia de muchos desarrolladores, que es el verdadero core de esta industria.

Un liderazgo en gestión de proyectos sumado a los conocimientos del equipo de desarrollo y junto con las herramientas clave, son el punto neurálgico de la calidad del software.

Referencias:

Comentarios