Elaborado por Materia para OpenMind Recomendado por Materia
4
Inicio ¿Cómo está revolucionando la inteligencia artificial el desarrollo de software ?
24 abril 2019

¿Cómo está revolucionando la inteligencia artificial el desarrollo de software ?

Tiempo estimado de lectura Tiempo 4 de lectura

La inteligencia artificial (IA) está teniendo un impacto en todos los sectores y procesos digitales tan profundo como difícil de cuantificar. El segmento de desarrollo de software no es ninguna excepción. Como han indicado expertos sectoriales, cada aspecto del ciclo de desarrollo de software va a beneficiarse de la implantación de herramientas de inteligencia artificial y tecnologías de aprendizaje automático. Desde predecir el calendario de un proyecto y la estimación de plazos de entrega de software hasta la detección de errores de programación, e incluso asistentes de programación y pruebas. La inteligencia artificial y el aprendizaje automático ya ofrecen una inestimable ayuda a los programadores.

La inteligencia artificial y el aprendizaje automático hasta ahora solo se han utilizado a través de algunas herramientas creadas con propósitos concretos de desarrollo. En los próximos años, los paquetes de Software como Servicio (SaaS) comenzarán a incorporar inteligencia artificial y aprendizaje automático. Los servicios en la nube ya utilizan algoritmos basados en inteligencia artificial, y ha llegado el momento de que las herramientas de inteligencia artificial comiencen a ofrecerse a través de servicios basados en suscripciones.

Integración de IA en el proceso de desarrollo de software

Antes de explicar los beneficios reales de la IA para los procesos de desarrollo de software, conviene echar un vistazo a algunos de los casos más recientes de integración de la IA en el ciclo de desarrollo de software.

    • Google bugspot tool w3C: debido al volumen de cambios de código que pueden llegar a acumularse a lo largo de un mes, así como al incremento del tamaño de las bases de código y de los equipo de desarrolladores, hacer un seguimiento de los errores de programación se está convirtiendo en una tarea cada vez más complicada. Esta herramienta de predicción de errores de Google aplica algoritmos de aprendizaje automático y análisis estadístico profundo para detectar errores y líneas poco fiables de código. La herramienta permite utilizar una variedad de métricas efectivas para detectar fallos, incluidas dependencias, líneas de código, etc.   
    • Stack Overflow AutoComplete: esta herramienta de autocompletar en la popular plataforma Stack Overflow se ha convertido en uno de los mejores exponentes de cómo incorporar funcionalidades de inteligencia artificial a una herramienta de desarrollo de software. La herramienta de Stack Exchange ofrece opciones para autocompletar líneas de código plenamente funcionales a partir de los datos de código existentes y las intenciones del desarrollador.
    • Deep Code: Una startup de Zúrich ha desarrollado DeepCode, una herramienta de programación que funciona como asistente de código para proyectos de desarrollo de software. Esta herramienta es capaz de aprender a partir de un gran número de reglas de programación – unas 250.000 – a las que accede a través de repositorios públicos y privados de GitHub. En función de estas reglas y del contexto adecuado, la herramienta sugiere posibles maneras de arreglar el código a los programadores. Ya es considerada una herramienta beneficiosa para la subsanación de errores y optimización de código.
BBVA-OpenMind-Juned Ghanchi-IA-desarrollo software-2
Imagen: autor

Precisión en las estimaciones de entrega

Cualquier empresa de desarrollo de aplicaciones móviles con experiencia que haya trabajado en un determinado número de proyectos de distinto alcance y grado de complejidad puede ofrecer estimaciones casi perfectas sobre los plazos de entrega de un nuevo programa. Sin embargo, existen factores – como un volumen elevado de errores de programación o la adaptación nuevas necesidades de cliente que surjan durante los proyectos – que pueden afectar al calendario de entrega. A este respecto, la inteligencia artificial puede ayudar a las empresas de desarrollo a incrementar el grado de precisión de sus calendarios estimados de entrega, a partir del análisis de datos de proyectos similares mediante capacidades de inteligencia artificial y aprendizaje de máquina.

Imagen: Pixabay

La IA permite definir calendarios y plazos con un grado de revisión mucho mayor, evaluando un amplio abanico de datos del proyecto de desarrollo de software, incluidas funcionalidades, plazos estimados de implantación de cada funcionalidad, perfiles de los empleados y su historial, cronogramas de proyectos similares, etc. La IA permite ofrecer predicciones mucho más fiables que las efectuadas por el personal, que no dispone de la misma capacidad para manejar todos los detalles.

Asistentes de programación basados en IA

Los asistentes de programación inteligentes son cada vez más populares entre los desarrolladores avanzados. Por ejemplo, Kite, para programadores Python, puede ofrecer asistencia y sugerencias para ayudar en el análisis de documentación, o a la hora de llevar a cabo ejercicios de depuración de errores. Esta herramienta ofrece ayuda continua para desarrolladores, mediante ejemplos relevantes de código y recomendaciones de documentos que pueden resultar útiles en función del propósito y el contexto. Estas herramientas pueden ayudar a reducir la carga de trabajo innecesaria de la que tienen que ocuparse los desarrolladores, permitiéndoles centrarse más en aspectos esenciales, como el desarrollo de una mejor experiencia de usuario.

Depuración de errores

La depuración de errores es uno de los procesos críticos en el desarrollo de software a los que la IA ha dado un vuelco radical. A medida que el volumen de datos que debe someterse a pruebas se incrementa exponencialmente, de igual manera lo hace la posibilidad de que se produzcan errores humanos y que aparezcan no detectados. Las herramientas de depuración de errores basadas en inteligencia artificial y algoritmos de aprendizaje automático pueden desempeñar un papel en esta área, ayudando a corregir bases de código sin intervención humana.

Compilador sofisticado de código

En el desarrollo de software, los compiladores convierten el código escrito con un lenguaje de programación de alto nivel en lenguaje máquina o instrucciones específicas para que las ejecute el hardware. Un compilador inteligente, al hacer esto, no necesita el código fuente original, lo cual permite acelerar el proceso. La IA permite a los compiladores de código llevar a cabo tareas de regeneración de código de hardware en cuestión de horas, en lugar de meses.

Inteligencia artificial en pruebas

El papel más importante de la inteligencia artificial en el ciclo de desarrollo de software es el de las pruebas. Especialmente relevante en dos áreas: pruebas de software y pruebas de productos con funcionalidades de inteligencia artificial y otros entregables.

De cualquier manera, la inteligencia artificial atesora un gran potencial para transformar los procesos de pruebas de software que llevan a cabo hoy por hoy las empresas de desarrollo en procesos robustos y autónomos que requieren una intervención manual mínima. Por ahora, la mayoría de herramientas de prueba de software han comenzado a incorporar parcialmente capacidades de inteligencia artificial. Por ejemplo, las últimas actualizaciones de las herramientas de Eggplant como de TestComplete ya disponen de funcionalidades de inteligencia artificial.

A pesar de lo mucho que se sigue hablando sobre el despliegue de tecnologías de inteligencia artificial en todas las aplicaciones para dotarlas de mayor inteligencia, todavía estamos lejos de ver una herramienta totalmente autónoma, capaz de desarrollar una solución completa para un propósito concreto. Por ahora, las herramientas basadas en IA son capaces de ampliar las capacidades de los desarrolladores para diseñar y poner a disposición de los clientes mejores productos. El papel de los desarrolladores va a seguir siendo tan importante como siempre, pero la importancia de herramientas dotadas de inteligencia artificial y sus posibles aplicaciones, va a seguir creciendo.

 

Juned Ghanchi

Comentarios sobre esta publicación

El nombre no debe estar vacío
Escribe un comentario aquí…* (Máximo de 500 palabras)
El comentario no puede estar vacío
*Tu comentario será revisado antes de ser publicado
La comprobación captcha debe estar aprobada