El Blog de QPath

Desarrollo profesional de sistemas software híbridos cuántico/clásicos: el ciclo de vida
El éxito de la adopción de la computación cuántica en el mundo real no solo dependerá de los imprescindibles avances científico/técnicos en el ámbito del hardware cuántico, sino también del ritmo de desarrollo del acompañante natural por excelencia para el éxito de las tecnologías informáticas: el software. En este proceso tendrá una importancia crucial las capacidades que seamos capaces de crear a corto plazo para producir soluciones y sistemas software que materialicen las ventajas cuánticas para el negocio y que, más pronto que tarde, moneticen su valor práctico para la industria. Para alcanzar el éxito en este sentido será imprescindible desarrollar software cuántico para la industria con las garantías de diseño, arquitectura, extensibilidad, escalabilidad, alto rendimiento y seguridad que la industria necesita y demanda. Basados en nuestra dilatada experiencia en el desarrollo de software para la industria, sabemos que la integración natural de todos esos elementos, de cada uno de ellos con el peso específico que le corresponda como parte del todo, solo es viable si el desarrollo del software cuántico se hace desde una perspectiva profesional.
Motivados por la relevancia de esta cuestión, el pasado 14 de abril, Día Mundial de la Cuántica, publicamos el breve artículo Algunas reflexiones sobre el desarrollo profesional de software cuántico/clásico[1]. Hecha esa especie de introducción general al tema, consideramos oportuno abordar, más detalladamente, algunos de los diferentes aspectos del amplio, complejo y cambiante “mundo” del desarrollo profesional de software cuántico para la industria. Para ello, en esta entrega nos centraremos en el ciclo de vida de los sistemas software híbridos cuántico/clásicos.
El desarrollo de sistemas de software cuánticos listos para la industria es híbrido porque, para que estos sistemas sean útiles, necesariamente deben integrarse y funcionar dinámicamente, de forma transparente, con la IT clásica, tal cual ocurre con muchísimos otros servicios en el ámbito del software clásico. La IT clásica de cada empresa u organización es específica, diferente, frecuentemente desarrollada y/o implementada a medida para adecuarla a las necesidades y objetivos de sus propietarios. Por ello, entre otras cuestiones, diseñar e implementar sistemas híbridos cuántico/clásicos útiles para el mundo real suele estar bastante alejado de los límites y alcances que se suelen establecer para la programación de pruebas de concepto, prototipos o experimentos de laboratorio y/o académicos.
Abordar con éxito retos de esta envergadura requiere de mucho más que concebir y desarrollar los indispensables y fabulosos algoritmos cuánticos, también es necesario hacerlo de forma tal que esos algoritmos sean parte armoniosa de sistemas software, capaces de integrarse con las tecnologías clásicas de la industria, que soporten con robustez el paso del tiempo, que sean capaces de absorber sin “traumas” el cambio de las necesidades de negocio y de las otras soluciones y tecnologías con las que interactuaran, que sean parte de un complejo y cambiante conjunto de servicios IT, que sean proyectos basados en las buenas prácticas de la ingeniería del software, y que para todo ello se disponga de las herramientas más adecuadas para hacerlos posibles de forma “industrial” y eficiente (en el mundo real esto implica ser competitivos en costes y ofrecer el mejor time to market).
Cuando las soluciones software híbridas cuántico/clásicas se desarrollan en el marco antes descrito estamos en el ámbito de lo que consideramos desarrollo profesional y de la aplicación de los principios de la Ingeniería de Software Cuántico[2] que están directamente vinculados a la buena práctica de gestionar los sistemas software híbridos cuántico/clásico a través de su ciclo de vida:
· abrazar la coexistencia de la computación clásica y cuántica
· apoyar la gestión de proyectos de desarrollo de software cuántico
· considerar la evolución del software cuántico
· tener como objetivo ofrecer programas cuánticos con cero defectos deseables
· promover la reutilización del software cuántico
· cubrir el gobierno y la gestión del software
El ciclo de vida del software híbrido cuántico/clásico
La primera complejidad que debemos abordar al desarrollar sistemas de software híbrido cuántico/clásicos listos para la industria es que estos proyectos se componen de dos partes, cada una de ella con sus respectivos equipos de desarrollo, sus propias características, complejidades y correspondiente ciclo de vida del software:
· Ciclo de vida del software clásico
· Ciclo de vida del software cuántico
Como no es difícil suponer, cada uno de estos ciclos posee sus especificidades, requisitos funcionales, técnicos y de integración, sus entornos tecnológicos, pero ambos comparten un gran objetivo común: contribuir a la creación de un armonioso sistema de software híbrido cuántico/clásico que pueda ser utilizado por los usuarios de las empresas y organizaciones en sus actividades cotidianas.
Cada uno de esos ciclos de vida cuenta con sus fases las cuales, aunque compartan nombre, difieren sustancialmente en el alcance y contenido del trabajo a realizar en cada una de ellas, a saber: desde las actividades de concepción y análisis, hasta en diseño, la implementación y prueba del sistema, así como sus diferentes evoluciones.
¿Cómo integrar ambos ciclos de forma tal que trabajemos con un único ciclo de desarrollo de software híbrido? Nuestra solución a esta cuestión ha sido desarrollar un modelo basado en el modelo ICSM[3] capaz de afrontar los retos más frecuentes a los que se enfrentan los proyectos de desarrollo de software híbrido[4]:
· Sistemas de sistemas (SoS) multipropietarios y multimisión.
· Emergencia e “intensidad en personas” (human intensive) con muchos requisitos no pre-especificables, presupuestos y calendarios no pre-especificables que conducen a la necesidad de gestionar la incertidumbre y el riesgo.
· Ritmo de cambio rápido que exige desarrollos incrementales y adaptabilidad para evitar la obsolescencia de la tecnología y los cambios en las prioridades de la misión.
Además, porque este modelo en espiral se basa en cuatro fundamentos que consideramos esenciales para los proyectos híbridos de desarrollo de software:
· la orientación basada en el valor de los stakeholders
· el compromiso y la responsabilidad incremental
· la ingeniería multidisciplinar concurrente
· las decisiones basadas en pruebas y riesgos
Estos fundamentos, combinados con los modelos adecuados de gestión de equipo, colaboración, ingeniería de producto, planificación y gestión de proyecto, configuración y mantenimiento, y calidad devienen en un marco que facilita la gestión exitosa de los proyectos híbridos cuántico/clásico de desarrollo de software.
Dado que la gestión del ciclo de vida del software clásico es ampliamente conocida, en esta entrega no profundizaremos en los detalles de su gestión, aunque ello no significa que no consideremos que la misma es muy importante para garantizar una buena hibridación del software clásico con el cuántico[5]. En este sentido solo destacaremos que para hacer una buena hibridación con los servicios cuánticos la solución clásica encargada de la conexión con los servicios cuánticos, como con cualquier otro software clásico desarrollado profesionalmente, el equipo de desarrollo deberá diseñar, construir, testear, desplegar y mantener la solución software durante toda su vida útil. Con la única salvedad de que mientras no existan propuestas de proveedores cuánticos libres de error, el equipo de desarrollo deberá considerar seriamente como lidiar con este riesgo, así como el asociado a la disponibilidad de diferentes propuestas tecnológicas.
Sabemos que una de las características de los equipos de desarrollo de software cuántico actualmente a nivel global es la composición multidisciplinarias de los equipos, por lo que es muy usual que entre quienes realizan tareas como desarrolladores existan muchos técnicos que, por profesión, no son programadores y/o ingenieros informáticos, por lo que no solo desconocen las buenas prácticas de la ingeniería del software cuántico, sino que también desconocen la importancia de desarrollar software cuántico. También sabemos que, incluso para los ingenieros informáticos tampoco hay mucho conocimiento sobre la naciente disciplina de la ingeniería del software cuántico y, por tanto, de las características específicas del ciclo de vida del software cuántico.
Pensando en todos ellos, hemos diseñado y desarrollamos QuantumPath®, una plataforma Full-Stack para el desarrollo profesional de software cuántico y el control de su ciclo de vida: desde la creación del algoritmo cuántico, pasando por su desarrollo, prueba y aplicación, hasta su despliegue, ejecución y reutilización. Una plataforma que hace posible trabajar con las buenas prácticas de la Ingeniería del Software, incluso sin conocerlas. Y teniendo en cuenta el riesgo asociado a la adopción de la tecnología que comentábamos, una plataforma que, gracias a su agnosticismo por diseño, reduce este nivel de riesgo a un punto controlado y que no afectará de modo crítico al usuario final.
Gestión del ciclo de vida del software híbrido cuántico/clásico con QuantumPath®
QuantumPath® es un ecosistema de herramientas, servicios y procesos que simplifican el desarrollo de algoritmos cuánticos integrados en sistemas de información híbridos, una plataforma capaz de gestionar algoritmos cuánticos y soluciones agnósticas de la tecnología cuántica (basados en puertas, quantum annealing) asistidas por herramientas de propósito general.
QuantumPath® pone a disposición de los desarrolladores una amplia serie de objetos para la organización de los proyectos de software cuántico, lo que incluye tanto la gestión de los proyectos (equipo, roles, permisos, seguridad, etc.), como de la propia solución, de sus activos, etc.
Como se muestra en la Figura 1 QuantumPath® no solo soporta un ciclo de vida completo para crear y mantener soluciones profesionales de software cuántico (desde la creación del algoritmo cuántico pasando por desarrollo, prueba e implementación, hasta su despliegue y reutilización), sino que ofrece un stack completo de ALM que acelera el diseño, construcción y despliegue de aplicaciones cuánticas.

Figura 1. Ciclo de vida de soluciones software cuánticas con QuantumPath®
Es de destacar que con QuantumPath® el ciclo de vida del software, dado el carácter agnóstico de la plataforma, se aplica a todas las soluciones desarrolladas con la plataforma, independiente del tipo de hardware cuántico para el que fuera desarrollado: puertas cuánticas, annealing cuántico, simuladores, etc.
QuantumPath® ofrece herramientas y tecnologías durante toda las fases del ciclo de vida que están diseñadas para facilitar el trabajo de los desarrolladores a la vez que cumple con esas funciones, por ejemplo:
· Las fases de Visión, Organización y Diseño se realizan mediante las herramientas de gestión de activos cuánticos que conforman la solución, y éstos puede ser construidos con el apoyo de diseñadores visuales (“no-code”), llamados Q Assets Compositor®. Donde se hace posible no tener que preocuparnos por límites en el número de puertas, variables, etc., dado que van a ser barreras que se van a ir rompiendo conforme avancen las tecnologías cuánticas.
· La fase de Construcción es iterativa y común a los diferentes tipos de tecnologías cuánticas (circuitos cuánticos, algoritmos de optimización). Se van refactorizando los activos cuánticos conforme se conoce mejor el problema y la tecnología con el apoyo de los diseñadores visuales y/o las implementaciones de lenguaje intermedio -adicionalmente, si es necesario profundizar más aún a nivel de máquina, es posible interactuar a ese bajo nivel con los editores de código directo, aunque no es lo recomendado por su dependencia con el hardware-. Y llegado el momento, esto será ejecutado, validado y refactorizado nuevamente.
o Esta fase de construcción tiene un aliado adicional: qSOA® y su capacidad de hacer posible el desarrollo dinámico de activos altamente escalables. Mediante código se pueden crear nuevos activos a partir de lógicas de negocio automatizables. Lo que ubica al CORE en el ámbito de proveer servicios distribuidos tal y como se conocen.
· El Testing de las soluciones a través de una serie de herramientas contenidas en el módulo Core y, de forma más especializada,0 utilizando Q Tester APP[6]. En este caso hablamos de dos contextos:
o Testing inherente de QuantumPath® CORE. A partir del lenguaje intermedio proporciona lo necesario para lanzar el caso de uso contra el proveedor cuántico. En este caso, CORE es responsable de realizar un proceso continuo de testing y mejora de los subsistemas responsables de esta acción dentro del sistema. Cada evolutivo de los requerimientos de un determinado proveedor de servicios cuánticos de terceros, es analizado, implementado y refactorizado en los subsistemas del CORE.
o Testing de los activos cuánticos. En este caso, el usuario realiza fases de Testing utilizando herramientas profesionales de valor añadido -como Q Tester APP-, empleando técnicas especializadas como puedan ser los casos de uso y los mutantes, de los propios activos que se están construyendo. De tal manera que se puede reducir el tiempo y el esfuerzo de validar el activo y sus resultados de forma iterativa y asistida.
· La Producción se gestiona mediante el runtime dashboard, al soportar ejecutar los algoritmos “en cualquier parte”, así como el análisis de los datos generados durante todo el ciclo de vida mediante su potente telemetría.
o El Runtime Dashboard hace posible, visualmente, la ejecución y el análisis de los resultados en el tiempo, de tal manera que se gestionan las ejecuciones de un determinado activo. Y sobre esto, determinar cuando está listo para producción, realizar consultas de ejecuciones realizadas en un instante dado y -por qué no- analizar dichas ejecuciones en periodos de tiempo.
o Por otro lado, esta misma ejecución puede ser llevada a cabo mediante los servicios del API de qSOA®. QuantumPath® se convierte en servidor de procesos remoto y hace posible la hibridación de sistemas de información, proporcionando al entorno clásico un modelo de “componentes RPC cuánticos”. Todas estas activaciones de ejecución pasan por el mismo subsistema con el que interacciona el RD, por lo que todo queda registrado y administrado.
o Dado que todos los elementos de ejecución y telemetría quedan centralizados en una base de datos normalizada, también se hace posible la explotación de la producción. Historial en el tiempo que posibilita las consultas y análisis necesarios para medir la producción, habilitando múltiples dimensiones de estudio.
Como se muestra en la Figura 2, las herramientas avanzadas permiten a los administradores de la plataforma automatizar el ciclo de vida de las soluciones cuánticas de diferentes maneras en función de los “pipeline modes” que soportan diferentes caminos de diseño para los activos cuánticos:

Figura 2. Pipeline Modes de QuantumPath®
El desarrollador puede acceder a nivel de lenguaje visual, y QuantumPath® proporcionará las herramientas de control de ciclo de vida del mismo, autocompilando y autotranspilando el producto para dejarlo listo para ejecutar. Igualmente, si el desarrollador genera lenguaje intermedio, QuantumPath® autoinfiere a lenguaje visual y autotranspila el producto para dejarlo listo para ejecutar, así como pasarlo de nuevo a las fases de diseño. Es decir, que el producto hará coherente el desarrollo de activos controlando cada una de las fases por la que éste pase en función de su “pipeline”. En el caso especial de DirectCode, ciertos elementos agnósticos se pierden, dado que QuantumPath® permite al usuario alcanzar el nivel de SDK de un determinado fabricante si lo desea (permite especializar mucho la solución o reducir las curvas de aprendizaje). Pero siempre encajado dentro de las lógicas de ciclo de vida mencionadas.
Además, los usuarios que así lo deseen pueden combinar estas fases aplicando la “filosofía” DevOps, ya que tanto el despliegue como la integración continuos están soportados por la propia plataforma.
qSOA®[7], que hemos comentado ya en los puntos anteriores, es la tecnología de QuantumPath® que permite la integración del software cuántico y la informática clásica a través de ConnectionPoints y su protocolo basado en estándares abiertos. Es un API REST, típico en las arquitecturas clásicas, que hacen posible interactuar con el CORE mediante lenguajes de programación. Lo que permite aproximar la construcción de soluciones hibridas desde dos contextos:
· Un equipo desarrolla los activos cuánticos totalmente con las herramientas de diseño y construcción comentadas. De tal forma que el sistema clásico solo tiene que realizar la llamada al caso de uso materializado como un Flujo.
· Un equipo desarrollo automatiza totalmente por código tanto la creación de los activos como su ejecución en forma de caso de uso.
Con qSOA® hemos extendido el stack ALM de QuantumPath®, haciendo posible el diseño y construcción dinámicos (automatizables por software) así como la explotación de los casos de uso integrados con la TI clásica. De esta manera, como se muestra en la Figura 3, QuantumPath® no sólo soporta todo el ciclo de vida del desarrollo cuántico, sino que también soporta de manera completa el ciclo de vida híbrido, ya que qSOA® simplifica la creación de arquitecturas híbridas clásico-cuánticas, mediante su API que expone los flujos como puntos de llamada permitiendo extender dinámicamente el catálogo de activos.

Figura 3. Ciclo de vida de sistemas software híbridos cuántico/clásico con QuantumPath®
Resumen
En el complejo contexto actual de déficit crónico de fuerza de trabajo cuántica consideramos que es más importante que podamos crear y proveer tecnologías y herramientas que faciliten el desarrollo profesional de software cuántico, que centrarnos en quiénes desarrollan software cuántico y qué profesiones tienen. En esta situación lo urgente es que quienes lo hagan puedan contar, desde ya, con las herramientas más adecuadas para acelerar las competencias necesarias para poder desarrollar software cuántico de alta calidad para el mundo real.
El desarrollo profesional de software cuántico y sistemas híbridos cuántico/clásicos útiles para la industria se fundamenta en la aplicación de las buenas prácticas de la ingeniería del software cuántico en los diferentes procesos y etapas del trabajo. El ecosistema de herramientas, servicios y procesos de QuantumPath® facilita y guía a los desarrolladores en el uso de las buenas prácticas de la ingeniería del software, las conozcan o no, y esto es algo que repercute positivamente en la calidad de las soluciones software creadas. Entre esas buenas prácticas está la gestión del software a través de su ciclo de vida.
Trabajar con herramientas como QuantumPath® que facilitan la gestión del ciclo de vida del software cuántico se agiliza el trabajo de los equipos de desarrollo, aumenta su productividad en las tareas de desarrollo, mantenimientos evolutivos y adaptativos y, no menos importante, tiene como valor añadido que mejora la protección de la inversión de las empresas en software cuántico.
Es muy importante comprender que la computación cuántica debe ser considerada como un elemento de negocio más, por muy incipiente que aún esté la tecnología. Al igual que ocurre con la IA en nuestros días, queda demostrado que tecnologías disruptivas imponen un antes y un después que no pueden pillarnos cuanto menos desprevenidos. Los casos de uso no deben ser hechos aislados de laboratorios y experimentos, deben dar paso a que cada vez más hablemos de casos de éxito desde el punto de vista de negocio, de soluciones de envergadura a nivel de proyecto que permitan preparar a la empresa a lo que viene. Y este transito será menos prolongado y doloroso para las empresas sin disponer de principios, herramientas y servicios que hagan más viable estos proyectos.
En este proceso es y será muy importante el desarrollo profesional de software puesto que al final, esta es una pieza imprescindible para hacer exponencial la explotación de la tecnología y su aplicación práctica y, al hacerlo, aprovechar la experiencia que una empresa de software aporta en esta nueva tecnología que se pone a nuestro alcance. Al trabajar con QuantumPath® los usuarios, además de trabajar con el ciclo de vida, también pueden aplicar a sus desarrollos, transparentemente, otros principios importantes de la ingeniería del software[8], como son:
· ser agnóstico con respecto a los lenguajes y tecnologías de programación cuántica
· asegurar la calidad del software cuántico
· abordar la seguridad y la privacidad por diseño
· abordar la sostenibilidad del software por diseño
La plataforma QuantumPath® es un acelerador del desarrollo de soluciones cuánticas y simplificar su adopción en el entorno profesional porque, además de proporcionar herramientas y guías para aplicar las buenas prácticas de la ingeniería del software cuántico, aporta la capacidad para crear sistemas de software híbridos cuántico/clásicos realmente útiles para las empresas al embeber dinámicamente en el software clásico que utilizan las llamadas/respuestas a los servicios cuánticos. Y todo ello adaptándose a la evolución del nivel de madurez del hardware cuántico.
Tal y como expresamos al inicio del artículo, la adopción de la computación cuántica en el mundo real demanda, cada vez más, que el software cuántico facilite su uso, extienda las experiencias de uso práctico a múltiples ámbitos y, sobre todo, que muestre de forma efectiva las ventajas que aporta la computación cuántica al negocio.
El rápido desarrollo de la computación cuántica en los últimos años nos ha permitido constatar que, tal y como expresábamos en julio del 2020 [9], el software cuántico debe producirse de una manera más industrial y controlada, lo que implica que al hacerlo se deben abordar aspectos como la calidad, la entrega, la gestión de proyectos, la evolución y reutilización del software cuántico, etc.
Tres años después de la publicación de ese artículo, y luego de una muy intensa actividad en la investigación y desarrollo del software cuántico, no solo estamos convencidos de que la computación cuántica será el principal impulsor de una nueva edad de oro de la ingeniería de software durante la presente década (2020), sino que también consideramos que los sistemas software híbridos cuántico/clásicos desarrollados profesionalmente serán determinante en el éxito de la adopción de la computación cuántica por el mundo real. No perdamos tiempo, el momento de comenzar a producir sistemas de software híbridos cuántico/clásico de alta calidad es ahora.
[1] Peterssen, G., Piattini, M., Hevia, J.L. Algunas reflexiones sobre el desarrollo profesional de software cuántico/clásico. Abril, 2023. El Blog de QPath®.
[3] Boehm, B., Turner, R., Lane, J.A. and Koolmanojwong, S. (2014). The Incremental Commitment Spiral Model: Principles and Practices for Successful Systems and Software, Pearson Education.
[4] Peterssen, G. Hevia, J.L. Piattini, M. Ingeniería del Software Cuántico & QuantumPath®. aQuantum. 2022
[5] Idem, Apartado 3.1, Estándar ISO/IEC/IEEE 12207.
[6] Martínez, A. Peterssen, G. QTester APP beta 1: gestor de pruebas para el software cuántico. Abril, 2023. El Blog de QPath®
[7] Hevia, J.L. Piattini, M. Peterssen, G. qSOA®: tecnología para la integración dinámica de los sistemas software híbridos cuántico-clásicos. Junio, 2022. El Blog de QPath®.
[8] Talavera_Manifesto
[9] Quantum Computing: A New Software Engineering Golden Age. ACM SIGSOFT Software Engineering Notes Volume 45 Issue 3 July 2020 pp 12-14. https://doi.org/10.1145/3402127.3402131