Impacto de la Inteligencia Artificial en el Desarrollo de Software

Publicado en

Durante décadas, los científicos han tratado de utilizar técnicas y algoritmos de inteligencia artificial para dotar a las computadoras con conocimiento y comportamiento similar al del ser humano. Aunque más sofisticadas que la programación tradicional, las técnicas utilizadas se han enfocado principalmente en crecer y mejorar manualmente la base de conocimiento del sistema, que siempre ha sido limitada. Un conocimiento limitado del dominio ha demostrado ser un mal sustituto para la experiencia de los humanos; es decir, los sistemas de IA son tan buenos como su programación (realizada manualmente por un humano)

El nuevo acercamiento es construir sistemas que aprenden de sí mismos, convirtiéndose en expertos que modelan y abstraen reglas a partir de los datos que les son alimentados. Dichos sistemas van mejorando en su precisión, se adaptan a lo desconocido y expanden sus capacidades más allá de la programación original. Las técnicas tradicionales de procesamiento de lenguaje natural (NLP), razonamiento basado en reglas y representación de conocimiento están siendo aumentadas con el machine learning —especialmente deep learning— para mejorar la IA (ver figura 1). Los resultados preliminares son prometedores: estamos viendo surgir nuevas apps con cierta “inteligencia” en una gran variedad de dominios.

Esta ola de inteligencia artificial impactará el trabajo de los desarrolladores de software, así que es importante estar preparados. Los desarrolladores deben entender en qué consisten dichas tecnologías y cómo pueden aplicarlas, tanto en el ciclo de vida de desarrollo de software como en las aplicaciones mismas.

Figura 1. El deep learning fortalece a otras técnicas de IA

Impacto en el ciclo de desarrollo

A continuación listamos algunas de las posibilidades de la inteligencia artificial aplicada al desarrollo de software:

Rápidamente convertir una idea en código. Tomar una idea de negocio e implementarla en código de software sigue siendo un gran problema, a pesar de las mejoras que ha habido en esta área gracias a los métodos ágiles y prácticas de análisis de negocio. Imaginemos que un equipo de desarrollo pudiera simplemente describir una idea en lenguaje natural y que el sistema la entendiera y la convirtiera en código ejecutable? Aunque eso todavía es ciencia ficción, sí es posible que por medio de procesamiento de lenguaje natural y sistemas expertos se pueden sugerir cambios y mejoras a una aplicación. La IA enriquecerá los modelos de requerimientos y casos de prueba con un reconocimiento de texto más sofisticado, resultando en mejores generadores de código.

Mejorar la precisión de estimaciones. La estimación de proyectos de software sigue siendo una actividad complicada y con baja precisión, en la cual es necesario involucrar expertos con amplio conocimiento del contexto. Imaginemos una solución para estimar software que analice datos históricos de proyectos anteriores de la empresa para encontrar estadísticas y correlaciones, y utilice analítica predictiva y reglas de negocio para proveer estimaciones más precisas de tiempo y esfuerzo.

Acelerar la detección de defectos y soluciones. Cuando un sistema presenta fallas en producción, los equipos dedican gran cantidad de tiempo y esfuerzo a poder reproducir dichas fallas para poder localizarlas y corregirlas, y en la mayoría de los casos el equipo que hizo el desarrollo ya no se encuentra disponible. Por medio de IA se podría analizar las habilidades de la persona que escribió el código original y localizar a alguien disponible con un perfil similar.

Automatizar las decisiones de qué construir y probar a continuación. Una IA podría analizar los patrones de uso de una aplicación en producción y en base a ello decidir qué requerimiento(s) del backlog deben tener mayor prioridad, o implementarse primero. Este análisis del comportamiento de uso también se podría utilizar para generar scripts de pruebas automatizadas.

Impacto en las aplicaciones

A nuestras computadoras, teléfonos y dispositivos está llegando una nueva generación de aplicaciones que puede hablar, escuchar, sentir, razonar, pensar y actuar. La lista de empresas construyendo aplicaciones enriquecidas con IA crece rápidamente.

Están son algunas capacidades en las aplicaciones de nueva generación que son posibles gracias a la IA:

Interacción natural con humanos. A lo largo de la historia del cómputo hemos tenido que interactuar con las computadoras por medio de interfaces no naturales: tarjetas perforadas, teclados, mouse, formas de captura, etcétera. La IA está habilitando que las computadoras puedan ver y escuchar a sus usuarios, además de contestar por medio de voz en lenguaje natural.

Sistemas expertos. Codificar políticas y reglas de negocio de un dominio específico a través de lenguajes de programación tradicional es una actividad compleja e intensiva en esfuerzo. La inteligencia artificial da la opción de construir sistemas expertos enfocados a un dominio específico que puedan dar soporte a novatos en una actividad o ayudar a los gerentes en su toma de decisiones. Aunque los sistemas expertos no son nada nuevo, hasta ahora comenzaremos a ver que se hacen populares, además de que serán enriquecidos por medio de deep learning.

Imitar capacidades humanas típicas. Una empresa brasileña de minería buscaba automatizar su proceso de inventario y para ello requería poder identificar correctamente una gran cantidad de vagones de tren. Inicialmente consideró poner etiquetas RFID en cada vagón. Sin embargo, se dio cuenta que todos los vagones ya están identificados de forma visual con letreros, así que fue mejor solución utilizar reconocimiento óptico de caracteres.

Software que aprende por sí mismo. El aprendizaje profundo combinado con big data es una de las tecnologías que provocará mayor disrupción en las aplicaciones que construimos. Será muy interesante ver qué aplicaciones estaremos construyendo próximamente cuando el aprendizaje no supervisado esté al alcance de todos.

La IA habilita nuevos tipos de aplicaciones

Gracias a la inteligencia artificial, gradualmente construiremos tipos de aplicaciones sin precedente. Las empresas necesitan desarrollar imaginación y experiencia para construir estas aplicaciones habilitadas por IA. Las empresas adoptarán IA gradualmente. Forrester Research visualiza que este proceso tenga 3 etapas:

  1. Hacer las apps existentes más “conversacionales” y fluidas. En un principio, los experimentos con IA se enfocan en agregar cosas “cool” con un alcance limitado para mejorar la experiencia e interés del usuario.

  2. Mejorar la comprensión, razonamiento y toma de decisiones. Por medio de una combinación adecuada de datos y ontologías enriquecidas con algoritmos de machine learning, las aplicaciones tendrán la capacidad de razonar y deducir información.

  3. Construir apps que son algo más que apps. Las aplicaciones tradicionales de escritorio o web gradualmente darán paso a los bots y agentes inteligentes. Los desarrolladores ya no se enfocarán en programarlos sino en entrenarlos.

Conclusión

Las organizaciones de software necesitan desarrollar capacidades en el campo de la inteligencia artificial. La inteligencia artificial no reemplazará el trabajo de los desarrolladores, sino que lo enriquecerá. Crear aplicaciones enriquecidas por IA, así como mejorar los procesos de desarrollo por medio de IA requerirá nuevas habilidades.

Recomiendo evitar la noción del científico de datos como este super dotado con conocimiento del dominio de negocio, habilidades matemáticas, analíticas, de programación y de gestión de infraestructura. Es más realista lograr tener personas especializadas en inteligencia artificial (matemáticos) que colaboren con personas especializadas en ingeniería de datos (programación y gestión de infraestructura).

El proceso de desarrollo de software es candidato a ser mejorado por medio de inteligencia artificial. Sin embargo, para que esto suceda requerimos que los procesos estén definidos e instrumentados. Las organizaciones maduras ya cuentan con esto y serán las primeras en cosechar estos beneficios, que a su vez les permitirán construir mejor software con menor esfuerzo.

Referencias

  1. D. Lo Giudice et al. “How AI Will Change Software Development And Applications”. Forrester Research, octubre 2016.