Está en la página 1de 3

1.

3 Importancia de automatizar etapas del desarrollo

Automatización en el desarrollo de Software

A lo largo de la historia la automatización ha sido un gran aliciente para el ser humano. Desde el
principio de los tiempos el hombre ha creado una gran cantidad de artilugios para facilitar todo
tipo de trabajos; además, ha ideado muchos métodos para incrementar la producción reduciendo
costes y esfuerzo.

Automatización: CI/CD

La división del trabajo de un proceso de fabricación en fases independientes, desarrollada con más
ahínco durante la segunda mitad del siglo XVIII, fue el primer paso hacia la automatización.

La mecanización fue la siguiente etapa ya que, aprovechando la ventaja que aportaba la división
del trabajo, permitió fabricar máquinas que reproducían las tareas de un trabajador. La
mecanización apoyada en la motorización y la tecnología energética dio paso al sistema industrial
de producción.

Los robots industriales son extremadamente hábiles para trasladar y manipular piezas ligeras y
pesadas. Se trata de varias máquinas separadas que están integradas en cadena y que a simple
vista parecen una. En 1920 la industria automovilística convirtió estos conceptos en un sistema de
producción integrado con el objetivo de reducir los costes en la línea de montaje. Éste es el
concepto que la mayoría de la gente asocia con la automatización.

Muchas industrias están muy automatizadas, casi la mayoría usa tecnología de automatización
para realizar alguna etapa de sus actividades. Ahora bien, por todos es sabido que la industria
informática no es diferente al resto. El auge de las nuevas tecnologías ha provocado que sea una
industria muy importante y en cambio constante. El software es un elemento crucial que ha
permitido un gran ahorro en costes y un gran incremento en productividad al realizar tareas
sencillas y repetitivas como el envío de un e-mail o incluso tareas mucho más complejas como la
facturación de una empresa.

Automatización en el desarrollo de Software

Al igual que todas las fábricas han implementado tecnología para ahorrar costes, ser más
productivos y obtener productos de calidad, el desarrollo de software está inmerso en un entorno
tan exigente que tiene que adaptarse, está obligado a cubrir las exigencias del mercado, a entregar
aplicaciones de calidad y a la mayor brevedad posible si no quiere quedarse obsoleto.

Por todo ello, implementar herramientas de automatización en el proceso de desarrollo de


software es muy importante. Agilizar la entrega de un producto software es vital y la reducción del
tiempo de desarrollo es cada vez un requisito más solicitado. Además, el valor añadido que supone
entregar un producto de calidad con menor esfuerzo es imprescindible.

Por todo ello, el objetivo de este post es recalcar el valor que tiene la automatización en el
desarrollo de aplicaciones.

Cada vez menos debido a todas las herramientas de las que disponemos, pero hasta hace poco el
proceso de desarrollo era arcaico, lento y poco eficiente. De hecho, hace no demasiados años, e
incluso hoy en día, muchas empresas no usan ni siquiera un control de versiones. Por tanto, el
1.3 Importancia de automatizar etapas del desarrollo

flujo que seguía el desarrollo de software consistía en: toma de requisitos, análisis, programación
de toda la funcionalidad, pruebas manuales y despliegue manual.

Uno de los principales problemas venía al hacer modificaciones en el código para desarrollar una
nueva funcionalidad de la aplicación: al hacer pruebas dejaban de funcionar cosas que antes lo
hacían, al no disponer de un control de versiones encontrar el error era muy lento. Por otro lado,
tras haber realizado pruebas, se realizaba un despliegue manual pero muchas veces nos
dejábamos de copiar cosas o ejecutar comandos, es decir, era otro punto susceptible de errores
humanos. Ante esta problemática surgen los conceptos de Integración Continua (CI por sus siglas
en inglés Continuous Integration), Entrega Continua (CD – Continuous Delivery) y Despliegue
Continuo (CD – Continuous Deployment). Nos proporcionan un modelo informático para distribuir
aplicaciones de forma más rápida y segura.

Continuous Integration (CI)

El objetivo principal de la integración continua es implementar un proceso automático y


consistente para compilar, empaquetar y testear aplicaciones. Esto permite que los equipos de
desarrolladores suban más frecuentemente código al control de versiones lo que conlleva una
mejor colaboración entre el equipo y una mejor calidad de código.

En este proceso se prepara un artefacto fácilmente, para ello se compila y se ejecutan test
automáticamente. Centra su empeño en chequear la aplicación para que no se “rompa” al subir
nuevos cambios a la rama principal del repositorio en el control de versiones.

Continuous Delivery (CD)

La entrega continua va un paso más allá: es la continuación de la integración continua, permite


generar artefactos automáticamente listos para ser desplegados en producción de forma manual.
Sin embargo, a veces no tenemos un artefacto que entregar como en el caso de una aplicación
compilada, como es el caso de una web; en este caso se despliega la web en un entorno de staging
o QA para que sea validada antes de pasar a producción.

Continuous Deployment (CD)

El despliegue continuo es la última fase de este modelo de distribución de aplicación. Esta etapa se
centra en desplegar automáticamente el artefacto o aplicación a producción, sin intervención
humana. Es decir, una vez commiteado el código al control de versiones, se ejecutará la
integración continua, generará el artefacto y lo desplegará automáticamente en producción. Sólo
si ocurre un fallo en algún paso del flujo no se efectuará el despliegue.

Es un paso bastante crítico, por lo que es conveniente realizar un estudio pormenorizado de si es


conveniente aplicarlo o no en una aplicación.

El siguiente diagrama explica resumidamente la funcionalidad de cada paso en este modelo:

01-automatizacion-en-el-desarrollo-de-software-blog-conasa

Conclusiones
1.3 Importancia de automatizar etapas del desarrollo

Hoy en día estamos envueltos en un mundo muy cambiante, en una sociedad que avanza a pasos
agigantados y a una velocidad vertiginosa.

El auge de las nuevas tecnologías ha permitido a las empresas crecer muy rápido, lo cual a priori
puede ser algo muy positivo. No obstante, de la misma manera que han crecido, podrían quedarse
obsoletas si no cubren las necesidades de sus clientes. Cabe destacar que los requerimientos de
los clientes cambian constantemente, por lo que hay que ser muy flexibles y ágiles para adaptarse
a dichas necesidades. Es por ello por lo que la automatización tiene tanta importancia.

El mundo del desarrollo de software no es la excepción. De hecho, es posible que sea al revés, la
automatización de procesos de compilación, empaquetado y despliegue, englobados en los
conceptos de Integración, Despliegue y Entrega Continua, permiten desarrollar software mucho
más rápido y con mayor calidad.

Por todo ello, os animamos a empezar a implementar estos procesos en vuestros desarrollos. La
optimización de tiempo y la calidad de vuestras aplicaciones se verá incrementada, con lo que
obtendréis clientes mucho más contentos y un negocio más productivo con los mismos recursos.

También podría gustarte