1. Introducción
DevOps ha ganado popularidad, debido a su capacidad para lanzar aplicaciones al mercado de manera rápida, eficiente, con bajo costo de desarrollo y mínimo esfuerzo humano como sugieren (Erich, Amrit & Daneva, 2014; Mousaei & Gandomani 2020; Almeida, Simões & Lopes, 2022). Adicionalmente, otros autores resaltan algunos beneficios del uso de DevOps tales como: time to market mejorado, cerrar la brecha entre el equipo de desarrollo (Dev) y Operaciones (Ops), lanzamientos confiables, calidad del producto mejorada, mejora y automatización de procesos entre otros (Ghofrani & Bozorgmehr, 2019; Guerrero et al., 2020). Así mismo, el trabahi de (Khan et al., 2022) resalta que las organizaciones están adoptando masivamente DevOps en un intento de satisfacer la creciente demanda de los clientes por aplicaciones altamente disponibles, de lanzamiento continuo y de gran valor, accesibles en todo momento y lugar y en cualquier plataforma.
Sin embargo, la adopción de DevOps representa un reto considerable, resaltando entre los desafíos existentes que dificultan su implementación: 1) falta de comprensión del significado de DevOps (Kamuto & Langerman, 2017), 2) resistencia al cambio por parte de las personas (Kamuto & Langerman, 2017), 3) falta de conocimiento para la elección e integración correcta de herramientas tecnológicas (Ghantous & Gill, 2017), 4) diferencias en el estilo de trabajo entre Dev y Ops (Erich et al., 2017), 5) diseño de la arquitectura para soportar DevOps (Bucena & Kirikova, 2017), 6) cambio en los procesos (Chen, 2017), y 7) cambiar estructuras y estándares organizacionales (Bucena & Kirikova, 2017).
Los retos antes mencionados representan barreras que las empresas deben eliminar para poder realizar una implementación exitosa de DevOps, además, cabe resaltar que siete de los retos están relacionados con la inexistencia de una guía clara y detallada de sus procedimientos que brinde el soporte para reforzar la comprensión de DevOps, al mismo tiempo que ayude en la adopción de prácticas y facilite su implementación a través de la sugerencia de herramientas tecnológicas, siendo el alcance de este trabajo de investigación.
En este contexto, este artículo se centra en realizar un mapeo entre las tareas de la ISO/IEC 29110 y las actividades del proceso DevOps, como punto de partida para la creación de una guía clara que ayude a la adopción de prácticas y facilite la implementación.
El objetivo de este artículo es explorar y establecer la relación entre las prácticas de DevOps y las tareas estipuladas en el perfil básico del estándar ISO/IEC 29110.
El resto del artículo está estructurado como a continuación se menciona, la sección 2 presenta los conceptos clave en los que se basa esta investigación, la sección 3 describe la metodología seguida para realizar el mapeo, la sección 4 analiza los resultados, y finalmente, la sección 5 presenta las conclusiones y trabajo futuro.
2. Marco Teórico
El presente estudio se enfoca en identificar las relaciones entre DevOps, que es un conjunto de prácticas caracterizado por su agilidad, automatización y colaboración continua entre dos áreas como lo son el desarrollo y las operaciones, y el perfil básico del estándar ISO/IEC 29110, diseñado para mejorar la calidad y el proceso sistemático en el desarrollo de software, particularmente en entidades muy pequeñas (con un máximo de 25 empleados). Esta sinergia se explora con el fin de descubrir cómo la estructura del estándar ISO/IEC 29110 puede integrarse coexistir y potenciarse con la flexibilidad de DevOps. Adicionalmente, esta investigación propone analizar los principios, prácticas y beneficios de DevOps, como la integración y entrega continua, y contrastarlos con los requisitos y procedimientos estipulados en el perfil básico del ISO/IEC 29110.
2.1 DevOps
De acuerdo a autores como Sharma (Sharma & Coyne, 2015), Jabbari (Jabbari et al., 2016), Lwakatare (Lwakatare et al, 2016), Ståhl & Bosch (Ståhl, D., & Bosch, 2017) y França (França, Jeronimo & Travassos, 2016) “DevOps es un proceso empresarial, que está compuesto por un conjunto de actividades o tareas que producen un resultado específico (servicio o producto) para los clientes, desde el desarrollo y comprobación hasta la producción”, pero ampliando, posterior a la puesta de producción, este proceso abarca también las operaciones y el monitoreo del sistema en producción, así como la planificación de las tareas a realizar que fomentan la mejora continua producto de la información que se ha generado en otras actividades de DevOps. La Figura 1, muestra una representación genérica del proceso de DevOps.
Como se observa en la Figura 1, DevOps puede entenderse como un proceso con 8 actividades, las cuales están compuestas por un conjunto de prácticas que lo sustentan. A continuación, se definen los conceptos concernientes:
Un proceso es un grupo de tareas y/o actividades relacionadas entre sí que persiguen cubrir las necesidades de los clientes (SOLÍS & TINOCO, 2015).
Las actividades son un grupo de acciones que persiguen un mismo fin (SOLÍS & TINOCO, 2015).
Una práctica es un ejercicio o realización de una acción de forma continuada y conforme a sus reglas (Lawrence Pfleeger, 2002).
De acuerdo con (Dominguez-Acosta & Garcia-Mireles, 2021; López Peña, 2021; Perera et al., 2017), DevOps está compuesto por las siguientes actividades:
Planificación: Los equipos de DevOps se encargan de conceptualizar y diseñar el software que van a desarrollar, identificando las necesidades del cliente y proponiendo soluciones a través de la elaboración o mejora de un software. En esta actividad se detallan las funcionalidades y características que tendrá el software. Además, se planifica qué herramientas utilizar para que el equipo tenga claras las tareas pendientes, el progreso realizado, y evalúen si podrán cumplir con los plazos establecidos, entre otros aspectos.
Codificación: en esta actividad se realiza el desarrollo o mejora del software a construir, teniendo en cuenta los elementos de la planeación, e implementando prácticas que garanticen la organización del código, la trazabilidad de los cambios y su alta disponibilidad para todos los integrantes del equipo en cualquier momento.
Construcción: en esta actividad se realiza la compilación, enlace o términos similares referentes a crear el empaquetado de la solución. Esta actividad depende de las instrucciones propias del lenguaje de programación y es una actividad repetitiva que se puede automatizar.
Pruebas: esta actividad busca comprobar que la calidad de lo construido sea la más alta, centrado su atención no solamente en comprobar que la funcionalidad responde correctamente a la descripción funcional del análisis, además permite determinar cómo responde a distintos estímulos que producirán un error.
Liberación: en esta actividad se automatizan los pasos anteriores encadenando varias prácticas, lo que permite a partir de los cambios registrados en la codificación, iniciar la construcción, pruebas y crear así un entregable listo para ser puesto en un servidor.
Despliegue: esta actividad se enfoca en tomar la unidad construida ya sea de forma manual o automatizada y la pone operativa en un servidor.
Operación: esta actividad provee un conjunto de prácticas que garantizan la estabilidad, replicabilidad y recuperación de fallos rápida, en la infraestructura que soporta los diversos aplicativos y servicios de la empresa.
Monitoreo: esta actividad provee a través de varias prácticas la generación de métricas que permiten estar pendiente del comportamiento y las variaciones que tengan tanto los aplicativos como la infraestructura, con el ánimo de fomentar la mejora continua.
2.2 ISO/IEC 29110
De acuerdo con (Bolívar et al., 2023; Galvan-Cruz et al., 2021; Muñoz, 2022) el estándar ISO/IEC 29110, titulado "Ingeniería de Software y Sistemas - Perfiles de Ciclo de Vida para Entidades Muy Pequeñas (VSE)", surge como respuesta a la necesidad de simplificar los procesos de desarrollo y gestión de proyectos para empresas y organizaciones que desarrollan software, y que cuentan con un máximo de 25 empleados. Este estándar fue elaborado por el Grupo de Trabajo 24 (WG24) del Subcomité 7 (SC7) del Comité Técnico Conjunto 1 (JTC1) de la ISO en 2005. El estándar tiene como propósito general proporcionar un marco de proceso simple y práctico para la ejecución de proyectos de software. Este estándar abarca 2 procesos: Gestión de Proyectos (GP) e Implementación de Software (IS). A continuación, se detalla cada uno:
2.2.1 Procesos del estándar ISO/IEC 29110
Los procesos que componen el perfil básico del estándar ISO/IEC 29110 están enfocados en proporcionar una guía para la gestión de proyectos y la implementación técnica en pequeñas organizaciones (O'Connor & Laporte, 2017; Moreno-Campos et al., 2014; Takeuchi et al., 2014).
Gestión de Proyectos
El propósito del proceso de GP es establecer y realizar de manera sistemática las tareas del proyecto de implementación de software, lo que permite cumplir con los objetivos del proyecto en la calidad, tiempo y costos esperados (ISO/IEC, 2011). El proceso de GP contiene 4 actividades y sus respectivas tareas. La Tabla 1 lista las actividades y número de tareas asociadas.
Nombre de la Actividad | Cantidad de tareas | |
---|---|---|
GP.1 | Planificación del Proyecto | 15 |
GP.2 | Ejecución del Plan del Proyecto | 6 |
GP.3 | Evaluación y control del proyecto | 3 |
GP.4 | Cierre del proyecto | 2 |
Implementación de software
El propósito del proceso de IS es la realización sistemática de las actividades de análisis, diseño, construcción, integración y pruebas de productos de software nuevos o modificados de acuerdo con los requisitos especificados (ISO/IEC, 2011). El proceso de GP se contiene 4 actividades y sus respectivas tareas. La Tabla 2 lista las actividades y número de tareas asociadas.
3. Metodología
La metodología definida para la realización del mapeo comprendió un enfoque estructurado, el cual se detalla a continuación:
Determinar el propósito y los objetivos de las actividades del proceso DevOps, desglosado en dos fases fundamentales:
Investigar y analizar fuentes bibliográficas relevantes, incluyendo artículos especializados y textos sobre DevOps, para obtener una comprensión profunda de la materia.
Sintetizar las actividades de DevOps, estableciendo claramente su propósito y los objetivos perseguidos, para delineación de su valor y aplicaciones.
Elaborar una matriz de correspondencia entre las tareas especificadas en el perfil básico del estándar ISO/IEC 29110 y las actividades inherentes al proceso de DevOps, buscando alinear los estándares de calidad y las prácticas de eficiencia operativa.
Este instrumento clave ha sido cuidadosamente examinado y validado por expertos en el ámbito de la ingeniería de software y especialistas en el estándar ISO/IEC 29110 y en el proceso DevOps. El consenso de los expertos ha permitido refinar la matriz para que sirva como un estudio confiable alineados a los principios de DevOps y los procesos definidos por el estándar ISO/IEC 29110.
Presentar los resultados, donde se muestra la convergencia entre el perfil básico del estándar ISO/IEC 29110 y el proceso DevOps, destacando hallazgos clave, proyectando implicaciones prácticas y teóricas para el campo de la ingeniería de software.
4. Análisis y Experimentación
La matriz de correspondencia diseñada en este estudio constituye un esfuerzo analítico y sistematizado para tender puentes entre el estructurado entorno del estándar ISO/IEC 29110 y las dinámicas prácticas de DevOps. A través de esta matriz, cada tarea detallada dentro de los procesos de gestión de proyectos y de implementación de software del perfil básico de ISO/IEC 29110 se mapea meticulosamente con las actividades de DevOps, incluyendo la integración y despliegue continuos, la automatización, el monitoreo y la gestión de infraestructura.
El propósito de este mapeo es realizar una comparativa para clarificar cómo el estándar y las prácticas de DevOps pueden complementar, enriquecer o, en algunos casos, mejorar optimizar las tareas de estándar, proporcionando así una base formal para las organizaciones que buscan armonizar estos dos mundos en su práctica de Ingeniería de Software.
Para cada una de las matrices de correspondencia mostradas en las siguientes secciones se muestra la tarea de cada actividad del ISO/IEC 29110 y su relación con las actividades y prácticas DevOps, en caso de existir alguna relación se marca con una X de lo contrario se mantiene en blanco, lo que significa que no se encontró valor alguno.
Planificación del Proyecto
La planificación de proyectos según el estándar ISO/IEC 29110 y las actividades de DevOps se entrelazan armónicamente, creando un ecosistema donde la metodología estructurada de ISO fomenta una base sólida para las fases de planificación, desarrollo y pruebas, mientras que DevOps inyecta agilidad y mejora continua en el ciclo de vida del software con prácticas como integración continua, entrega continua, despliegue automatizado y monitoreo constante. Esta relación sinérgica permite que los proyectos se beneficien de la previsión y claridad de ISO, complementándose con la eficiencia y respuesta rápida de DevOps para adaptarse a los cambios y mejorar la calidad del software entregado (ISO/IEC, 2011) Tabla 3.
Ejecución del plan de proyecto
La ejecución del plan de proyecto según el ISO/IEC 29110 se alinea estrechamente con las actividades dinámicas de DevOps. La meticulosa planificación ISO/IEC 29110 establece un camino claro que DevOps sigue con su ciclo de retroalimentación rápida en las etapas de codificación y construcción. Adicionalmente, la rigurosidad en las pruebas de ISO/IEC se refleja en la automatización y la entrega continua de DevOps. Además, las etapas de liberación y despliegue se transforman mediante la implementación automatizada de DevOps; y finalmente, la operación y el monitoreo, siempre presentes en ISO/IEC, se intensifican en DevOps para un ajuste continuo y optimización del rendimiento, lo que demuestra una convergencia complementaria de disciplina y adaptabilidad entre ambas metodologías (ISO/IEC, 2011) Tabla 4.
Evaluación y Control del proyecto
En el marco de la evaluación y control del proyecto del ISO/IEC 29110, la estructura y medición detalladas del avance del proyecto complementan la naturaleza cíclica de DevOps, en la que la planificación es iterativa, la codificación y construcción son continuas, y las pruebas son automáticas y frecuentes. La liberación y el despliegue en DevOps, ágiles y automatizados, se benefician de la precisión de seguimiento de ISO, mientras que la operación y el monitoreo en DevOps proporcionan datos en tiempo real que alimentan de vuelta al sistema de control del ISO, permitiendo así una mejora y adaptación continuas dentro de un marco de trabajo controlado y sistemático (ISO/IEC, 2011) Tabla 5.
Cierre del Proyecto
El cierre del proyecto de acuerdo al ISO/IEC 29110, implica la conclusión formal y la reflexión sobre el proyecto, se entrelaza con DevOps a través de un enfoque de mejora continua: mientras que ISO promueve la documentación final y la revisión de los logros en comparación con los objetivos iniciales, DevOps ve el 'cierre' como una fase transitoria hacia el próximo ciclo de vida, donde la retroalimentación obtenida en etapas de planificación, codificación, construcción, pruebas, liberación, despliegue, operación y monitoreo informa las futuras iteraciones, garantizando que cada 'fin' es el precursor de nuevas mejoras y desarrollos en el flujo de trabajo del software (ISO/IEC, 2011) Tabla 6.
Inicio de la Implementación del Software
El inicio de la implementación del software en el marco del ISO/IEC 29110 sienta las bases metodológicas que se integran con las prácticas de DevOps, iniciando con una planificación robusta que define los requisitos y el alcance del proyecto. Esta planificación inicial se complementa con la rápida iteración de DevOps en codificación y construcción, facilitando una transición suave a las pruebas y asegurando que la liberación y el despliegue sean ágiles y estén alineados con los objetivos iniciales. La operación y el monitoreo de DevOps, comenzando ya en las primeras fases del proyecto, permite una retroalimentación temprana y una adaptación continua, lo que refuerza el enfoque de ISO para un inicio de proyecto bien definido y controlado (ISO/IEC, 2011) Tabla 7.
Análisis de los requisitos de software
El análisis de requisitos de software del ISO/IEC 29110 establece una alineación con DevOps iniciando con la planificación detallada, que aborda los requisitos funcionales y no funcionales esenciales para la codificación y construcción del software. Esta fase crítica en ISO se refleja en DevOps a través de prácticas como la infraestructura como código y la automatización de pruebas, que validan continuamente los requisitos a medida que el software evoluciona. Además, las actividades de liberación, despliegue, operación y monitoreo en DevOps están guiadas por los criterios establecidos durante el análisis de requisitos, asegurando que el software desarrollado cumpla con las expectativas del cliente y se mantenga eficiente y confiable en entornos de producción reales (ISO/IEC, 2011) Tabla 8.
Arquitectura y diseño detallado de software.
La arquitectura y el diseño detallado de software en ISO/IEC 29110 proporcionan una hoja de ruta técnica que se alinea con DevOps, asegurando que cada actividad, desde la planificación inicial hasta la codificación y la construcción, se ejecuta con una comprensión clara de la infraestructura y los patrones de diseño del sistema. Este enfoque meticuloso permite que las prácticas de integración continua y entrega continua de DevOps se implementen eficazmente, garantizando que las pruebas, la liberación y el despliegue se realicen de manera cohesiva y en consonancia con la arquitectura prevista. Asimismo, facilita la operación y el monitoreo post-despliegue, posibilitando el monitoreo y la gestión proactiva del rendimiento basadas en la arquitectura y el diseño previamente definidos, lo que da lugar a sistemas estables y escalables en producción (ISO/IEC, 2011) Tabla 9.
Construcción del software
En el ISO/IEC 29110, la construcción del software se enfoca en transformar los requisitos y el diseño en un producto operativo, resuénalo que es acorde lo cual resuena con la filosofía de DevOps al adoptar prácticas de automatización y herramientas de integración continua que facilitan la transición desde la codificación hasta la construcción y pruebas. Esta etapa de construcción se enriquece con un flujo de trabajo de DevOps que integra la liberación y el despliegue continuos, asegurando que el producto construido sea desplegado de manera eficiente en la operación. El monitoreo constante en DevOps, alimentado por la fase de construcción, permite ajustes rápidos y mejora iterativa, garantizando que el software no solo se construye para cumplir con las especificaciones iniciales, sino que también evoluciona en respuesta a los comentarios y necesidades operativas reales (ISO/IEC, 2011) Tabla 10.
Integración y pruebas de software
La integración y pruebas de software según el ISO/IEC 29110 se alinean estrechamente con las prácticas DevOps que priorizan la automatización de las pruebas y la integración continua para validar la calidad y funcionalidad del software a lo largo de su desarrollo. En este entorno, cada incremento de software se somete a pruebas tras su construcción, integrando cambios pequeños y frecuentes que se verifican automáticamente para garantizar su adecuación antes de avanzar a la siguiente etapa. Esta práctica no solo refuerza la confianza en la estabilidad del software, sino que también permite una liberación y despliegue más ágiles, facilitando un ciclo de retroalimentación continuo que alimenta directamente la operación y el monitoreo del software en ambientes productivos. Este enfoque integrado y fluido permite a los equipos de DevOps ajustar rápidamente las estrategias y procesos en respuesta a cualquier desafío o necesidad emergente, optimizando el rendimiento y la fiabilidad del software en tiempo real (ISO/IEC, 2011) Tabla 11.
Entrega del producto
La entrega del producto en el estándar ISO/IEC 29110 se centra en asegurar que el software cumpla con los criterios de aceptación establecidos y sea entregado adecuadamente al cliente, lo cual se complementa armónicamente con las actividades de DevOps, que buscan optimizar y automatizar los procesos de liberación y despliegue. En DevOps, la entrega continua permite que cada cambio validado a través de la construcción y pruebas sea rápidamente liberado y desplegado en entornos de producción, garantizando una operación eficiente y un monitoreo constante para identificar y resolver cualquier problema post-despliegue de manera inmediata. Esta integración resulta en un flujo de trabajo más ágil y eficiente, donde la entrega del producto no solo cumple con las expectativas del cliente, sino que también se adapta de manera continua a las mejoras y necesidades emergentes, asegurando un alto nivel de satisfacción y rendimiento del producto final (ISO/IEC, 2011) Tabla 12.
5. Resultados
La exploración de las prácticas de DevOps respaldada por la revisión de la literatura mostró una comprensión ampliada del proceso DevOps y su aplicación práctica. Se identificaron y documentaron las prácticas clave dentro de las actividades DevOps que promueven una integración y entrega continuas, así como la colaboración entre equipos de desarrollo y operaciones, destacando la compatibilidad con las tareas del perfil básico del estándar ISO/IEC 29110.
Mediante una matriz de correspondencia, se logró el análisis de cómo cada tarea del estándar ISO/IEC 29110 se relaciona con las actividades de DevOps. Este mapeo detallado mostró puntos en común, además de identificar oportunidades de mejora y adaptación de las tareas del estándar 29110 en el contexto de las prácticas de DevOps.
El estudio encontró que la implementación de DevOps dentro del marco de la ISO/IEC 29110 puede potenciar significativamente la eficiencia operativa, reducir el tiempo de comercialización y mejorar la respuesta a los problemas de una mejor forma. La evaluación de las prácticas de DevOps en el entorno del estándar 29110 sugiere que, mientras se mantiene la conformidad con el estándar, es posible adoptar un enfoque más flexible y adaptativo, que resulta en una mejora continua y en la entrega de un software que satisface las necesidades emergentes del mercado de una manera más eficaz.
Los hallazgos pueden justificar la adopción de DevOps como un complemento para mejorar la eficiencia, la calidad y la respuesta a los cambios en el entorno de desarrollo y operaciones de software, dando así un paso adelante en la evolución de las mejores prácticas de la ingeniería de software.
6. Conclusiones y trabajo futuro
La importancia de la presente investigación radica en el valor que tiene para las organizaciones comprender cómo las prácticas modernas de DevOps pueden ser incorporadas en marcos de trabajo estandarizados (ISO/IEC 29110 perfil básico). Al realizar un análisis exhaustivo que relaciona directamente las actividades de DevOps con un estándar de calidad reconocido como el ISO/IEC 29110, la investigación busca proporcionar una guía práctica para la implementación efectiva de DevOps en organizaciones que desean adherirse a o ya siguen este estándar.
El presente estudio ha establecido que DevOps y el estándar ISO/IEC 29110 pueden coexistir de manera complementaria, ofreciendo un marco de trabajo robusto que aprovecha las fortalezas de ambos enfoques. Se ha identificado que, a pesar de sus diferencias, la agilidad y la automatización de DevOps se alinean con los procedimientos sistemáticos de la ISO/IEC 29110, contribuyendo a una mejor calidad y eficiencia en el desarrollo de software. Los hallazgos sugieren que la adopción de DevOps en organizaciones que siguen la ISO/IEC 29110 puede conducir a una mejora significativa en la entrega de software, con la adaptabilidad necesaria para responder a las demandas del mercado actual. La integración de DevOps con el estándar ISO/IEC 29110 ha demostrado ser especialmente beneficiosa para las entidades muy pequeñas, ya que facilita un enfoque escalable y flexible sin comprometer la calidad y la gobernanza del proyecto.
Como trabajo futuro, se está desarrollando una guía clara que ayude a la adopción de prácticas y facilite la implementación. Además, se considera relevante resaltar a partir de los resultados de este estudio se identifican como futuras líneas de investigación, estudios enfocados en estrategias específicas y estudios de caso detallados sobre la implementación de DevOps en organizaciones que están reguladas por el ISO/IEC 29110. Esto podría incluir el desarrollo de un conjunto de mejores prácticas y herramientas específicas para facilitar la transición y adaptación de los procesos ISO a entornos DevOps. Además, sería valioso explorar el impacto a largo plazo de esta integración en la calidad del software y en la satisfacción del cliente, así como en la capacidad de las organizaciones para mantenerse competitivas y ágiles en un panorama tecnológico en constante evolución. Finalmente, otra perspectiva podría realizar un análisis en el cual se contrasten no solo las sinergias sino las discrepancias entre ambos enfoques lo cual serviría de guía para las empresas para lograr complementar y potenciar la aplicación de ambos enfoques.