Como seguramente ya sabrás, en la ingeniería de software, la gestión de la configuración de software (SCM) se refiere a un proceso para mantener los sistemas informáticos, servidores y software en un estado deseado y consistente.
A veces llamada gestión de cambios de software o automatización de TI, la idea es tener un sistema en marcha para rastrear y comparar los cambios realizados en un sistema a lo largo del proceso de desarrollo de software y también identificar quién realizó estas revisiones.
El propósito es facilitar la gestión de proyectos, minimizar errores, aumentar la trazabilidad y mejorar la calidad general del software.
Los beneficios de un proceso de SCM son:
- Actualizaciones multiusuario: A menudo muchas personas trabajan en el desarrollo de software, lo que significa que hay actualizaciones y cambios constantes. SCM te permite rastrear todo el código y las configuraciones implementadas en producción (es decir, una auditoría de configuración) e introduce trazabilidad al determinar qué colaborador realizó cada uno.
- Productividad: SCM mejora la productividad del software al asegurar que haya errores mínimos. Por ejemplo, siempre puedes garantizar que tus entornos de prueba y producción coincidan.
- Comunicación y colaboración: La comunicación entre los miembros del equipo es sencilla con SCM, haciendo que sea simple para las partes interesadas involucradas en el proyecto trabajar juntas y mejorar la calidad del producto.
- Pruebas de plataforma y sistema operativo: Asegura que el software funcione correctamente en múltiples plataformas y sistemas operativos.
- Adaptación al cambio: SCM facilita la adaptación a cambios en el cronograma, la política y los usuarios.
- Control de costos: Al rastrear a los miembros del equipo y el flujo de trabajo del proyecto, SCM ayuda a controlar los costos y aumentar la eficiencia.
En este artículo, te guiaré por los diferentes pasos de un proceso de SCM, quiénes deben estar involucrados y qué herramientas están disponibles para ayudar.
Los 5 pasos de un plan de SCM
El proceso de gestión de la configuración de software es una serie de pasos diseñados para rastrear y gestionar todos los defectos, recursos, códigos, documentos, hardware y presupuestos a lo largo de un proyecto.
SCM es un proceso interdisciplinario que involucra a personas en todos los niveles, incluyendo DevOps, desarrolladores, jefes/propietarios de proyecto, administradores de sistemas (SysAdmin) y testers.
1. Planificación e identificación
El primer paso del proceso es la planificación e identificación. En este paso, el objetivo es planificar el desarrollo del proyecto de software e identificar los elementos que están dentro del alcance. Esto se logra realizando reuniones y sesiones de lluvia de ideas con tu equipo para definir los criterios básicos para el resto del proyecto.
Parte de este proceso implica definir cómo avanzará el proyecto e identificar los criterios de salida. De esta manera, tu equipo sabrá cómo reconocer cuándo se han alcanzado todas las metas del proyecto.
Las actividades específicas durante este paso incluyen:
- Identificar elementos como casos de prueba, requisitos de especificación y módulos de código
- Identificar cada elemento de configuración de software en el proceso
- Agrupar detalles básicos de por qué, cuándo y qué cambios se harán y quién será responsable de hacerlos
- Crear una lista de los recursos necesarios, como herramientas, archivos, documentos, etc.
2. Control de versiones y línea base
El paso de control de versiones y línea base asegura la integridad continua del producto identificando una versión aceptada del software. Esta línea base se designa en un momento específico del proceso de SCM y solo puede alterarse mediante un procedimiento formal.
El objetivo de este paso es controlar los cambios que se realizan en el producto. A medida que el proyecto avanza, se establecen nuevas líneas base, lo que da lugar a varias versiones del software.
Este paso implica las siguientes actividades:
- Identificar y clasificar los componentes que están cubiertos por el proyecto
- Desarrollar una forma de rastrear la jerarquía de las diferentes versiones del software
- Identificar las relaciones esenciales entre varios componentes
- Establecer varias líneas base para el producto, incluyendo las líneas base de desarrollo, funcionales y de producto
- Desarrollar un esquema de etiquetado estandarizado para todos los productos, revisiones y archivos para que todos estén alineados.
Fijar una línea base de un atributo del proyecto obliga a que se apliquen procesos formales de control de cambios de configuración en caso de que estos atributos cambien.
3. Control de cambios
El control de cambios es el método utilizado para garantizar que cualquier cambio realizado sea consistente con el resto del proyecto. Contar con estos controles ayuda con la aseguramiento de la calidad y la aprobación y liberación de nuevas líneas base. El control de cambios es esencial para la finalización exitosa del proyecto.
En este paso, las solicitudes para cambiar configuraciones son enviadas al equipo y aprobadas o denegadas por el gestor de configuración de software. Los tipos más comunes de solicitudes son agregar o editar varios elementos de configuración o cambiar los permisos de usuario.
Este procedimiento incluye:
- Controlar los cambios ad hoc solicitados por el cliente
- Comprobar el mérito de la solicitud de cambio examinando el impacto general que tendrá en el proyecto
- Realizar los cambios aprobados o explicar por qué se han denegado las solicitudes de cambio.
4. Contabilidad del Estado de la Configuración
El siguiente paso es asegurar que el proyecto avance conforme al plan, probando y verificando de acuerdo a las líneas base preestablecidas. Implica revisar las notas de las versiones y documentos relacionados para garantizar que el software cumpla con todos los requisitos funcionales.
La contabilidad del estado de la configuración realiza un seguimiento de cada versión lanzada durante el proceso, evaluando qué hay de nuevo en cada versión y por qué los cambios fueron necesarios. Algunas de las actividades en este paso incluyen:
- Registrar y evaluar los cambios realizados de una línea base a la siguiente
- Supervisar el estado y la resolución de todas las solicitudes de cambio
- Mantener la documentación de cada cambio realizado como resultado de solicitudes de cambio y para llegar a otra línea base
- Revisar versiones anteriores para análisis y pruebas.
5. Auditorías y Revisiones
El paso final es una revisión técnica de cada etapa en el ciclo de vida del desarrollo de software. Las auditorías y revisiones examinan el proceso, las configuraciones, el flujo de trabajo, las solicitudes de cambio y todo lo que ha intervenido en el desarrollo de cada línea base durante el proyecto.
El equipo realiza múltiples revisiones de la aplicación para verificar su integridad y también reúne la documentación esencial de acompañamiento como notas de las versiones, manuales de usuario y guías de instalación.
Las actividades en este paso incluyen:
- Asegurarse de que se cumplan los objetivos establecidos en la etapa de planificación e identificación
- Garantizar que el software cumpla con los estándares de control de configuración identificados
- Cerciorarse de que los cambios respecto a las líneas base coincidan con los informes
- Validar que el proyecto sea coherente y esté completo conforme a los objetivos del proyecto.
A diferencia de los sistemas de archivos tradicionales, un software especializado de gestión de bases de datos puede ofrecer funciones avanzadas como integridad y seguridad de datos, que son cruciales para una gestión de configuración de software efectiva.
¿Quiénes intervienen en el proceso de configuración de software?
El proceso de gestión de configuración de software es multidisciplinar y abarca prácticamente a todos los miembros del equipo de desarrollo de software.
Gestor de Configuración
El gestor de configuración se encarga de determinar quién es responsable de qué durante el proceso de desarrollo. Se asegura de que todo el mundo siga el proceso de gestión de configuración de software en todo el proyecto y tiene la última palabra sobre todas las solicitudes de cambio.
Director de Proyecto
El papel del director de proyecto es fundamental para el proceso de gestión de configuración de software. Establece el calendario del proyecto para asegurarse de que se cumplan los plazos y también genera informes sobre el progreso del equipo. Otro papel importante del director de proyecto es asegurarse de que cada miembro del equipo esté siguiendo las pautas predeterminadas para crear, modificar y probar el software.
Desarrolladores de Software
Los desarrolladores son responsables de escribir el código durante el desarrollo, así como de atender cualquier solicitud de cambio aprobada.
Auditor
Este rol se encarga de todas las auditorías y revisiones y debe asegurarse de que la versión final sea completa y consistente.
¿Cuáles son las ventajas de utilizar herramientas de gestión de configuración?
Existen diversas herramientas disponibles para ayudar a facilitar el proceso de gestión de configuración de software. El propósito de estas herramientas es automatizar tareas que tradicionalmente son manuales, lo que permite una mayor precisión, rapidez y control. Más específicamente, pueden ayudar con:
- Alertas e informes: Una buena herramienta de SCM proporcionará alertas e informes si hay desviaciones respecto al punto de referencia acordado. Estos datos se enviarán casi en tiempo real, permitiendo que los responsables actúen rápidamente si algo se desvía del rumbo.
- Seguimiento de cambios: Las herramientas de SCM harán el seguimiento automático de los cambios en servidores o aplicaciones y también permitirán la entrada manual de estos datos. La auditoría de cambios también puede realizarse mediante el monitoreo de los resultados de scripts.
- Comparación de configuraciones: Las mejores herramientas de gestión de la configuración del software ofrecerán una manera de identificar diferencias entre configuraciones.
- Solución de problemas más rápida: Los errores, fallos y problemas se identifican rápidamente para que los desarrolladores actúen antes de que la situación empeore.
- Seguimiento de inventario: La mayoría de las herramientas de SCM incluirán una forma de rastrear los activos de hardware y software para que no tengas que mantener una lista manual.
- Gestión de parches: Las herramientas de SCM pueden ayudarte a hacer el seguimiento de todos los detalles relacionados con la gestión de parches a medida que distribuyes el software actualizado.
¿Existen desventajas al utilizar una herramienta de gestión de la configuración del software?
Hay algunas cosas a considerar antes de adoptar una herramienta de SCM, entre ellas:
- Consumo de recursos: Debes contar con los recursos para respaldar el proceso de principio a fin
- Limitaciones de conocimiento: Todos los involucrados deben tener un profundo conocimiento de las herramientas de gestión de software que se utilizan
- Desventaja para pymes: El alcance de lo que se necesita para usar estas herramientas de manera eficiente puede ser difícil de asumir para un pequeño negocio
- Especificaciones de hardware: Se requiere hardware rápido y altamente configurado para que el proceso funcione sin problemas.
Palabras finales sobre la gestión de la configuración del software
Arriba presenté un esquema general de lo que necesitas saber para establecer un proceso de gestión de la configuración del software para rastrear, controlar y administrar tus proyectos.
Las herramientas de SCM, como Ansible o TeamCity, ayudan a automatizar muchos aspectos del proceso de SCM y pueden representar una excelente inversión. Puedes ver nuestra selección en el artículo de las 10 mejores herramientas de gestión de la configuración del software.
El mundo de la gestión de la configuración del software y el aseguramiento de la calidad se desarrolla rápidamente. Suscríbete al boletín The QA Lead para recibir consejos, trucos y nuevas herramientas directamente en tu bandeja de entrada.
O sigue aprendiendo escuchando este podcast: LA GENERACIÓN DE LA AUTOMATIZACIÓN AUTÓNOMA Y CÓMO SE PRESENTA (CON BERTOLD KOLICS DE MABL) o revisando esta lista: LAS 10 HERRAMIENTAS DE PRUEBAS DE SOFTWARE MÁS NUEVAS USADAS POR QAS
