El Blog de QPath
Computación cuántica práctica: retos del desarrollo de software cuántico
Autores



Uno de los grandes obstáculos que tiene que superar el crecimiento de la industria cuántica es disponer, lo antes posible, de un mercado laboral robusto, con la suficiente fuerza de trabajo especializada en las diferentes competencias que demanda la computación cuántica. Sin embargo, está resultando muy difícil debido al elevado nivel de analfabetismo cuántico a nivel global, lo que implica una muy elevada curva de aprendizaje que retrasa los resultados de los programas de alfabetización cuántica.
En el caso del desarrollo de software cuántico la escasa fuerza de trabajo que domina los principios de la computación cuántica para desarrollar algoritmos cuánticos no suelen ser los ingenieros de software. Muchos desarrolladores de software tienen interés, pero por ahora la mayoría carece de los conocimientos y competencias necesarios. Por otro lado, los profesionales que desarrollan software cuántico no suelen contar con las competencias y herramientas de la ingeniería del software para poder crear software cuántico con sus principios de alta calidad.
El desarrollo de software cuántico se realiza en diferentes contextos siendo sus objetivos determinantes en la definición de quién, cómo y con qué se desarrolla el software cuántico. Atendiendo al objeto de este artículo, resaltaremos tres de esos contextos que consideramos relevantes en la actualidad:
· Investigaciones sobre el software cuántico
· Desarrollo de herramientas para el desarrollo de software cuántico
· Desarrollo de soluciones y aplicaciones cuánticas prácticas
Nosotros trabajamos de forma intensa en estos tres contextos, así que sabemos muy bien que:
· Cuando se investiga sobre el software cuántico, el objetivo del desarrollo es validar la viabilidad conceptual de los objetos de investigación a través de experimentos y pruebas de concepto. En este contexto si el equipo de investigación consigue demostrar la viabilidad tecnológica con el equipo, las herramientas y los métodos que tenga a mano es suficiente. Ya tendrán otros equipos que convertir en producto (“ingenierizar”) lo experimentado con éxito. En este contexto actualmente se detecta una gran actividad a nivel global.
· Cuando se desarrollan herramientas para el desarrollo de software cuántico el gran objetivo es diseñar e implementar un conjunto de herramientas, servicios, procesos, métodos, etc., integrados en un ecosistema armónico, que facilite el desarrollo profesional del desarrollo de algoritmos y soluciones para los sistemas de información cuánticos e híbridos, gracias a la aplicación de las mejores tecnologías y técnicas, así como la mejor práxis de la ingeniería del software y la programación cuántica. En este contexto, actualmente hay muy pocas empresas trabajando a nivel global.
· Cuando se desarrollan soluciones y aplicaciones prácticas para el mundo real, el objetivo es diseñar e implementar eficientemente -sii se hace correctamente basados en un buen catálogo de requisitos- una solución robusta, escalable y segura, capaz de satisfacer las necesidades que dieron lugar al desarrollo. Tecnológica y técnicamente es otra dimensión del problema a resolver. Para ello el equipo de desarrollo define las herramientas, lenguajes, normas, procesos, etc. con los que asegurará la calidad del desarrollo del software. En este contexto, está animándose el movimiento a nivel global.
Cuando comenzamos nuestra andadura en la I+D del software cuántico nos resultó relativamente “fácil” definir que dedicaríamos especial atención al segundo contexto de desarrollo de software cuántico, con el objetivo de que el mismo nos dotara (como hemos logrado) de herramientas robustas, tanto para el desarrollo del software cuántico en la I+D, como para el desarrollo de soluciones prácticas profesionales de alta calidad. Por ello rápidamente constatamos que nuestro primer reto sería, y sigue siendo, que lo que lo abordáramos lo haríamos desde la perspectiva de las buenas prácticas de la Ingeniería del Software y la Programación Cuántica, porque estamos convencidos de que está llamada a hacer una contribución imprescindible para el éxito rotundo de la computación cuántica en la práctica.
Por supuesto que este reto no responde a una actitud purista, sino a la experiencia adquirida durante décadas en el desarrollo de soluciones software reales, muchas de ellas críticas, de la que hemos aprendido una lección indeleble: desarrollar software cuántico de alta calidad debe ser el principal objetivo y, para que ello sea posible, se deben adoptar métodos, metodologías y herramientas que faciliten aplicar las mejores prácticas de la ingeniería y la programación de software cuántico.
¿Se puede desarrollar software cuántico sin aplicar esas prácticas? Por supuesto que si, como pasa todavía con demasiada frecuencia en el software clásico. Pero, sin lugar a duda, que al igual que ocurre con un edificio, un puente o una carretera mal diseñada, con deficiencias en los cálculos de resistencia de los materiales y en una carga de uso mal prevista o no estimada, lo normal es que ese software presente errores y limitaciones graves en determinados contextos de uso y que, por ello, no soporte el paso del tiempo de forma eficiente, no sea ni escalable ni seguro y, por todo ello, no brinde garantías a la inversión realizada. Por ello creemos que, desarrollar software de forma profesional, del tipo que sea, clásico o cuántico, que brinde garantías de alta calidad, necesariamente pasa por aplicar buenas prácticas de la ingeniería del software.
La existencia de múltiples propuestas de hardware cuántico, cada una de las cuales requiere de conocimientos y desarrollos específicos para que el software funcione correctamente nos colocó ante el segundo reto: facilitar a los desarrolladores una forma de programar agnóstica respecto al hardware cuántico, de forma tal que puedan centrarse en los requisitos funcionales de la solución, en su diseño y desarrollo sin tener que emplear tiempo en dominar el complejo funcionamiento de los ordenadores cuánticos de los diferentes proveedores.
Como si lo anterior fuera poco, para desarrollar software cuántico en la actualidad hay que tener presente (y estar preparado para ello en conocimientos y competencias), que existen dos grandes enfoques tecnológicos cuánticos: basado en puertas cuánticas y annealing. De ahí surgió el tercer reto: facilitar un entorno desde el que se pueda trabajar con ambos enfoques.
Rápidamente constatamos que debíamos dominar una amplia variedad de lenguajes de programación (aunque también es cierto que progresivamente, en casi todos los casos, Python se ha convertido en una suerte de lenguaje cuántico “universal”, aunque subsisten lenguajes propietarios en los fabricantes) o “casarnos” con algunos de ellos poniendo en peligro la “universalidad” de los desarrollos cuánticos. De ahí que, casi desde el inicio, también surgiera el siguiente reto: poder desarrollar software cuántico de alta calidad, sin necesidad de utilizar ningún lenguaje de programación en particular.
En nuestra opinión, la ventaja cuántica se logrará no solo cuando se disponga de hardware cuántico lo suficientemente potente para demostrar esa capacidad en los laboratorios (por incuestionable que sea la importancia de lograrlo y demostrarlo en ese ámbito) sino, sobre todo, tal y como ha ocurrido en los grandes saltos históricos de la adopción de la informática en la sociedad, cuando se alcance la explotación de esa potencia de la computación cuántica a gran escala práctica, gracias a la “invasión“ de las aplicaciones software reales de gran calidad.
Esa “invasión” de aplicaciones para explotar las ventajas de la computación cuántica, como ya se vislumbra, no se producirá como resultado de la sustitución de la computación clásica por la cuántica, sino como resultado del desarrollo de un robusto ecosistema informático híbrido, en el que se integren el software clásico y el cuántico. Y así nos encontramos con el siguiente reto: facilitar el desarrollo de software híbrido clásico/cuántico integrado, de forma dinámica, para resolver necesidades cotidianas del negocio, de las instituciones, y de los usuarios.
Con el objetivo de proporcionar una entrega continua de alta calidad al demandante negocio, cada vez más el desarrollo de software se realiza con un ciclo de vida del desarrollo más rápido, algo que conocemos como DevOps, el acrónimo inglés de development y operations. Facilitar a los equipos de “negocio” (salud, financiero, etc.) definir el problema y participar en el proyecto, para luego desarrollar el software cuántico y desplegarlo en los ordenadores cuánticos fue el siguiente reto detectado.
Para poder desarrollar el software que diseñamos, al ritmo que debemos hacerlo para ser competitivos, requeríamos que el equipo técnico no solo creciera rápidamente, sino que estuviera en condiciones de aportar en el menor plazo posible. Pero, dada la situación ya indicada sobre el mercado de la fuerza de trabajo cuántica, la solución más práctica para nosotros pasó por contratar visualizando su potencial para algunas competencias, formar y entrenar para el desarrollo de esas competencias necesarias individuales con el objetivo de conformar un robusto equipo polímata, listo para abordar todos los retos del desarrollo de software cuántico. Así nos encontramos con otro reto: ser capaces de “simplificar” el trabajo de los desarrolladores de software cuántico con herramientas que, de forma práctica, contribuyan a acelerar su preparación. Pero ojo, que no nos engañe esta última expresión: desarrollar software cuántico está muy lejos de ser algo simple. Que las herramientas ayuden no implica, ni remotamente, que los desarrolladores no deban poseer los conocimientos y competencias necesarias para utilizarlas adecuadamente, sino que las herramientas sean capaces de complementar aquellas competencias que no se tengan.
La realidad hoy, y lamentablemente lo será también mañana, es que el desarrollo del software cuántico demanda conocimientos y competencias muy variadas, de las que solo pueden aportar parte de ellas profesionales de diferentes disciplinas quienes, trabajando en equipos con un elevado grado de organización y colaboración científico-técnica, hacen posible los avances del desarrollo del software cuántico. La superación con éxito de esta complejidad depende, en gran medida, de la existencia de herramientas para el desarrollo de software cuántico de alta calidad válidas para cualquier profesional que integre esos equipos de desarrollo.
Por supuesto que hay muchas posibles vías para intentar abordar la superación de estos y otros retos que hemos ido encontrando en nuestro trabajo de I+D sobre la Ingeniería del Software y la Programación cuántica. Nosotros lo abordamos a través del desarrollo de un conjunto de soluciones que, concebidas como parte de un todo, han dado lugar a una plataforma para el desarrollo de software cuántico de alta calidad, lista para contribuir de forma práctica y operativa al crecimiento de la fuerza de trabajo cuántica: QuantumPath®.
Veamos a continuación, más detalladamente, cómo abordamos la solución de cada uno de estos retos, para lo cual nos detendremos en los resultados más relevantes de nuestra actividad de I+D materializados hasta ahora en herramientas prácticas para desarrollar software cuántico de alta calidad. También compartiremos algunas de nuestra visión sobre algunas de las excelentes expectativas que, a corto plazo, nos brinda el grado alcanzado en la superación de estos retos.
Soluciones a los retos del desarrollo de software cuántico práctico con QuantumPath®
Han transcurrido cinco años desde que comenzamos nuestra andadura por la I+D sobre la Ingeniería del Software y la Programación Cuántica. Ha sido tan apasionante el recorrido, lleno de tantas satisfacciones que nos hacen pensar que fue ayer que comenzamos y, gracias a ello, nos quedan como anécdotas de superación las lógicas situaciones complejas que afrontamos para transferir as resultados de la investigación a herramientas útiles para el desarrollo de software cuántico.
Con el objetivo fundamental de crear herramientas para el desarrollo profesional de soluciones cuánticas para el mundo real, acelerando la adopción de la computación cuántica en la práctica, una de las primeras medidas que tomamos para la arquitectura de la plataforma fue separar su estructura en dos:
· CORE: núcleo de la plataforma QuantumPath® compuesto actualmente por 9 módulos, capaces de gestionar algoritmos cuánticos y soluciones agnósticas de la tecnología cuántica (basados en puertas, quantum annealing), que hace posible la ingeniería y el ciclo de vida del software cuántico híbrido.
· APPs: conjunto de aplicaciones (a la fecha hay definida 12 propias de la plataforma) que se integran o integrarán con los módulos Core, que dan soporte para la adopción de buenas prácticas de ingeniería y programación de software, y aseguran la calidad de los proyectos de desarrollo cuántico y la integración del software clásico con el software cuántico.
Esta arquitectura nos garantiza que el desarrollo de las herramientas, servicios y APIs de la plataforma CORE para la creación de soluciones cuánticas de calidad sea, en todo momento de su evolución, tecnológicamente segura, extensible, de alto rendimiento y escalabilidad. Veamos cómo, a partir de la misma, abordamos algunos de los retos de I+D a los que nos hemos enfrentamos:
Primer reto: aplicación de las buenas prácticas de la Ingeniería del Software y la Programación Cuántica
La búsqueda de ideas para superar este reto comenzó visualizando una plataforma que permitiera, a través de interfaces apropiadas, realizar el desarrollo y ciclo de vida de algoritmos y soluciones cuánticas profesionales. El objetivo era lograr la gestión asistida de los procesos e, incluso, la automatización de las tareas y fases de la ALM.
La solución al reto la logramos desarrollando e integrando en el CORE de QPath® toda la pila ALM orientada a la creación de software cuántico: gestión de activos, metalenguajes, compiladores, transpiladores, unidades de ejecución escalables, resultados unificados, adaptadores de integración, catálogo de servicios cuánticos… Todos los elementos necesarios para dar soporte del ciclo de vida: desde la creación, desarrollo, prueba e implementación, hasta su despliegue y reutilización.
Este soporte ALM que brinda el CORE para la gestión de proyectos cuánticos será enriquecido con Apps de la plataforma especializadas en gestión avanzada del ciclo de vida, que permitirán superar este reto con creces.
Segundo reto: facilitar a los programadores una forma de programar agnóstica respecto al hardware cuántico
El punto de partida para superar este reto era la idea de implementar una solución que permitiera la reutilización sin límites de los desarrollos de algoritmos y soluciones para uno o diferentes ecosistemas cuánticos de los proveedores. Es decir, poder ejecutar las unidades de proceso cuántico de forma transparente, independientemente de la plataforma donde se ejecutan. Lograr la portabilidad total del software (escribir una vez, ejecutar en todas partes), se convirtió en el objetivo.
La solución a este reto la logramos diseñando y desarrollando un potente lenguaje de intermedio que hace soporta el desarrollo de algoritmos y soluciones cuánticas nativas de QPath® de forma 100% agnóstica.
Logrado este resultado, añadimos la opción semi agnóstica con DirectCode, que facilitar a los desarrolladores el uso de algoritmos y soluciones no nativas de QPath®
Tercer reto: facilitar a los desarrolladores un entorno desde el que puedan trabajar con los enfoques basados en puertas y en annealing
Basados en que la computación cuántica tiene dos grandes enfoques tecnológicos: modelo basado en puertas y quantum annealing, el objetivo fue que la plataforma soportara ambos enfoques, con las mismas prestaciones generales para ambos, para que los desarrolladores utilicen el que necesiten o deseen sin necesidad de trabajar en diferentes entornos de desarrollo.
La solución a este reto la logramos implementando en QPath® la capacidad para integrarse de forma natural con las múltiples plataformas y enfoques cuánticos, y también siendo compatible con una potente pila de alto nivel con un rico conjunto totalmente agnóstico de puertas cuánticas y un lenguaje de definición QUBO puro que permite no tener que preocuparse por los detalles específicos de bajo nivel de cada QPU. Esto hace posible la portabilidad automática de una solución basada en annealing a una solución basada en puertas, de forma transparente para el desarrollador de software cuántico.
Cuarto reto: poder desarrollar software cuántico profesionalmente, de alta calidad, sin necesidad de conocer ningún lenguaje de programación en particular
Teniendo presente la situación descrita al inicio del artículo sobre los conocimientos y competencias de los desarrolladores de software cuántico, nos pareció adecuado buscar soluciones para desarrollar software cuántico profesionalmente sin necesidad de programar.
La solución a este reto la logramos diseñando y desarrollando Q Assets Compositor™, un conjunto de herramientas de QPath® para el diseño visual de algoritmos y soluciones cuánticas compuesto por Quantum Gates editor, Annealing compositor, DirectCode editor.
Quinto reto: facilitar el desarrollo de software híbrido clásico/cuántico integrado, de forma dinámica
Desde nuestra perspectiva, hablar de computación cuántica práctica es hablar de aplicaciones útiles para el negocio, la actividad de las organizaciones y los usuarios. Por lo tanto, para nosotros la superación válida de este reto no pasaba por acceder a una muestra de datos en un formato determinado para hacer pruebas experimentales propias de las fases de desarrollo, sino de integrar dinámicamente, en tiempo real, el software cuántico y los sistemas de información clásicos.
La solución al reto la encontramos creando qSOA®, solución tecnológica de QPath® que hace posible a través de ConnectionPoint y su protocolo basado en estándares abiertos la:
· Agregación y modificación dinámica de nuevos assets a la solución en base a las reglas de negocio
· Ejecución dinámica de los algoritmos enviando datos de entrada y recogiendo los resultados consolidados tanto online como de forma diferida.
Sexto reto: facilitar la ingeniería continua desde las necesidades de negocio, pasando por el desarrollo de las soluciones cuánticas, hasta su despliegue y operación.
Si es importante eliminar las barreras existentes entre los expertos de “negocio”, los desarrolladores de software y los responsables de operaciones (siguiendo un enfoque “BizDevOps”) en el caso del software “clásico; lo es más aún en los sistemas cuánticos en los que la participación de los expertos (científicos, químicos, economistas, médicos, etc.) debe ser continua con el fin de refinar de manera iterativa los algoritmos y modelos cuánticos.
Para solucionar este reto, QPath® aporta un conjunto de prácticas y herramientas que permite llevar a cabo un enfoque “Quantum BizDevOps” (BizDevOps cuántico) disciplinado, que les permite a los expertos del dominio definir los algoritmos cuánticos de forma inteligible y asistida, generando de manera automática las soluciones software cuánticas y desplegándolas de manera transparente y monitorizada en diferentes ordenadores y simuladores cuánticos. De esta manera se puede no sólo desarrollar software cuántico más ágilmente sino también responder de manera más eficiente a los cambios en las necesidades de los usuarios.
Séptimo reto: simplificar el trabajo de los desarrolladores de software cuántico con herramientas que, de forma práctica, contribuyan a acelerar la preparación de la fuerza de trabajo cuántica
El objetivo para superar este reto era claro: diseñar un modelo de explotación de la plataforma que permita acelerar el desarrollo práctico de software cuántico mediante la abstracción de sus complicaciones técnicas y, con ello, reducir la curva de aprendizaje.
La solución a este reto la logramos diseñando y desarrollando herramientas RAD (Rapid Application Development), válidas para la creación de algoritmos y soluciones cuánticas profesionales las cuales, combinadas con el diseño y desarrollo visual de Q Assets Compositor™, permiten a los equipos de desarrollo centrarse en los requisitos funcionales de la solución, dejando los detalles subyacentes a la plataforma QPath®.
Teniendo presente la situación del mercado de la fuerza de trabajo cuántica y las características multidisciplinares de los equipos de desarrollo de software cuántico, nuestras decisiones para abordar y superar los retos antes descritos siempre han estado vinculadas a un gran objetivo: diseñar soluciones que contribuyan a democratizar la aplicación de las buenas prácticas de la ingeniería del software cuántico para, a través de ello, facilitar el desarrollo de software cuántico de alta calidad en cualquier contexto de trabajo y para cualquier perfil de desarrollador.
La comunidad cuántica no tiene dudas respecto a la importancia de tener un rico catálogo de buenos algoritmos cuánticos para estar bien ubicados en la carrera de la computación cuántica. Pero también debemos ser conscientes de que no bastará con tener buenos algoritmos cuánticos si no somos capaces de explotarlos de forma útil, práctica y cotidiana. Y esto solo ocurrirá gracias a la existencia de soluciones capaces de conectar los sistemas clásicos con la maravillosa algoritmia cuántica.
La producción de software cuántico de alta calidad tiene un elevado impacto en la aceleración de la adopción de la computación cuántica práctica. Este ha sido, y es, el fundamento común al abordar los retos descritos, los que actualmente estamos abordando y los que, sin lugar dudas, tendremos que abordar con la evolución de la computación cuántica. Por ahora, el gran esfuerzo realizado para superar estos retos ha tenido una recompensa enorme y por ello, los resultados materializados en QuantumPath® nos estimulan sobremanera a continuar trabajando en la investigación, diseño y desarrollo de nuevos retos que contribuyan a acelerar la adopción del desarrollo de software cuántico de alta calidad.