Metodologia SCRUM y el rol del arquitecto de software
Facebook
Twitter
LinkedIn

Metodología SCRUM y el rol del arquitecto de software

Metodología SCRUM es un proceso de trabajo ágil para la gestión de desarrollo de software o proyectos complejos.

La arquitectura de software tiene un papel fundamental en el desarrollo de Software, ya que sus sistemas de estructuración (metodologías) permiten crear etapas tempranas del desarrollo que aseguran el DESEMPEÑO Y LA CALIDAD DEL PRODUCTO FINAL además de servir como guías. Sin una metodología de desarrollo se puede limitar el funcionamiento, agilidad y propósito de un proyecto y por tanto puede aumentar considerablemente su costo en correcciones.

Es así como la metodología SCRUM surge para gestionar y desarrollar software o proyectos complejos, de manera ágil y productiva reduciendo el tiempo de desarrollo, mejorando la calidad del producto y por consiguiente satisfaciendo las necesidades de los clientes.

¿Qué rol tiene el arquitecto de desarrollo?

En la metodología SCRUM se encuentran definidos tres roles principales: Product Owner, SCRUM Master y el equipo SCRUM, estos roles aparentemente dejarían por fuera al arquitecto de Software, sin embargo, existen roles secundarios que también son parte del equipo SCRUM como el Cuerpo de asesoramiento de SCRUM (SCRUM Guidance Body), el cual se compone de expertos que definen los lineamientos y parámetros que se utilizarán para evaluar el valor del negocio y consultores. En efecto, este rol, incluye a los arquitectos de desarrollo, que, por su su liderazgo técnico, podrán interpretar las necesidades del cliente, proponer soluciones de diseño efectivas y de calidad e identificar problemas.

Rol del arquitecto de desarrollo en un equipo SCRUM

Definir y segmentar las responsabilidades es vital en una metodología SCRUM, todas las fases deben ser ejercidas por equipos e individuos competentes y expertos. Y es por esta razón, que en sistemas de desarrollo complejos, una persona difícilmente puede cubrir con amplitud técnica las decisiones arquitectónicas y dar credibilidad a la arquitectura de software.

Es por tanto que la participación del equipo es de vital importancia para la creación y el mantenimiento de la arquitectura. Un equipo de arquitectos de software que se aísle del equipo SCRUM, puede crear un sistema de estructuración que corra el riesgo de ser rechazada.

Básicamente las responsabilidades del arquitecto en un equipo SCRUM están diferenciadas por la fase en la que se encuentren, siendo mayor la necesidad de éste en una fase de preparación inicial (upfront) del proyecto, antes de iniciar con las iteraciones (sprints).

Diagrama ilustrativo de la colaboración entre la metodología SCRUM y la arquitectura de software

Tomado de Charlie Alfred’s Weblog: SCRUM and Architecture – Partners or Adversaries?

UPFRONT

Las siguientes son las responsabilidades que tiene el arquitecto de desarrollo en la fase de preparación antes de iniciar los ciclos SCRUM:

  • Establecer los objetivos del negocio.
  • Identificar las características y restricciones principales del sistema.
  • Identificar los atributos de calidad más relevantes del sistema con ayuda de los stakeholders.
  • Identificar los escenarios que evidencian los puntos críticos en el sistema basados en los de atributos de calidad anteriormente identificados.
  • Definir los estilos y tácticas arquitectónicas que se utilizarán en el sistema propuesto.
  • Tomar las decisiones arquitectónicas y técnicas que haya a lugar para el correcto desarrollo del proyecto.
  • Elaborar las vistas necesarias para tener un entendimiento del sistema por parte de los stakeholders desde sus diferentes puntos de vistas (vista de contexto, componentes y conectores, despliegue, proceso, información).
  • Realizar las pruebas de concepto que fueren necesarias para cerrar brechas entre la arquitectura y la implementación.

SPRINT Siguientes

Luego de la fase previa de definición y elicitación (upfront), el arquitecto estará participando activamente dentro del equipo SCRUM, asumiendo básicamente las siguientes responsabilidades:

  • El arquitecto de software asegura que el equipo de SCRUM entienda el enfoque y los retos arquitectónicos más importantes en cada sprint.
  • Guiar la construcción con las estrategias de arquitectura definidas.
  • El Product Owner y el SCRUM Master trabajan con el arquitecto para priorizar los requisitos a implementar en cada iteración.
  • El arquitecto comunica las decisiones y facilita las conversaciones arquitectónicas de distintos puntos de vista en cada sprint.
  • El arquitecto asegura que haya conformidad entre las entregas en cada sprint y la arquitectura.
  • El arquitecto responde preguntas y da orientación arquitectónica cuando sea necesario.
  • Identifica los retos que son críticos.
  • Debe comunicar efectivamente al equipo del desarrollo y asegurarse de que comprendan la esencia de cada uno de los retos.
  • El arquitecto y el equipo de desarrollo deben realizar seguimiento periódico durante el proceso de desarrollo para asegurarse que las alternativas técnicas escogidas son implementadas.
  • Junto con el SCRUM Master, coordina a los miembros del equipo para adaptarse a la arquitectura prevista.
  • El arquitecto junto con el Product Owner y los miembros del equipo preparan el Product Backlog.

BIBLIOGRAFÍA

  1. SCRUMstudy™. A Guide to the SCRUM BODY OF KNOWLEDGE. 2016 Bertrand Meyer. Agile Methods: The Good, the Hype and the Ugly. Springer 2015.
  2. SCRUM and Architecture – Partners or Adversaries? ver link

Blogs