Los desarrolladores de hoy adoptan paradigmas de desarrollo ágil o continuo, como ágil y DevOps, para crear y perfeccionar aplicaciones. Estos esfuerzos de desarrollo se basan en iteraciones frecuentes de software para agregar capacidades, eliminar errores y mejorar el rendimiento. Cada fase del ciclo infinito de DevOps implica una gran variedad de herramientas para editar, versionar, construir, probar, implementar y monitorear el software.
Las demandas del desarrollo de software ágil crean oportunidades para errores y cuellos de botella en los procesos. Una compilación típica puede requerir vincular una variedad de módulos y procesos antes de que se pueda realizar la compilación, y cada componente puede existir en varias versiones ubicadas en uno o más repositorios. Las pruebas son otra parte problemática del proceso, donde los desarrolladores deben definir y ejecutar una asombrosa variedad de pruebas para evaluar y validar cada iteración. Surgen más desafíos en la implementación, ya que la compilación validada debe pasar a producción con una interrupción mínima del entorno existente.
Las herramientas de desarrollo automatizadas agilizan las tareas frecuentes y redundantes, como la creación, integración y prueba de software, y también mantienen los estándares de calidad del código y los requisitos de seguridad. Sin embargo, las herramientas que sustentan este ejemplo de automatización de TI generalmente tienen un alcance limitado y se incluyen en categorías particulares de proyectos. Por ejemplo, las herramientas de construcción e integración incluyen Jenkins, CircleCI, Bamboo y Apache Maven, mientras que las herramientas de prueba incluyen Selenium, TestComplete, Ranorex y Tosca Testsuite. La mayoría de las herramientas se basan en alguna combinación de secuencias de comandos y flujos de trabajo basados en objetos para establecer comportamientos automatizados.
Las futuras herramientas de desarrollo automatizadas abarcarán una mayor parte del proceso de desarrollo. Esto requerirá un alto nivel de integración e interoperabilidad con una amplia variedad de herramientas que ya se encuentran en el mercado de desarrollo de software. La inteligencia artificial y el aprendizaje automático también desempeñarán un papel más importante en la automatización del desarrollo de software futuro para evaluar, por ejemplo, una base de código para el estilo y el contenido.