El Blog de QPath
QrEngineer APP beta 1: herramienta de reingeniería de software cuántico (y II)
Modernización del software*
En la entrega anterior nos centramos la atención en las funcionalidades del módulo de QrEngineer APP para la integración de programas cuánticos desarrollados con el SDK de otros proveedores. En este caso nos centraremos en las funcionales del otro módulo que actualmente también tiene disponible QrEngineer APP: QModernization – Modernización del software cuántico con QuantumPath®.
Si se desea abordar los problemas asociados con las migraciones de computación cuántica, la reingeniería y la modernización del software basado en estándares se debe garantizar que las buenas prácticas de la Ingeniería del Software para la modernización y reingeniería sean incorporadas al dominio de la computación cuántica. Para que ello sea posible es indispensable disponer de herramientas de ingeniería inversa que analicen la información del software cuántico en el código fuente capaz de generar modelos abstractos que se puedan utilizar en los procesos de modernización del software cuántico.
Nuestra propuesta es generar esos modelos de acuerdo con el estándar Knowledge Discovery Metamodel (KDM), mediante una extensión de KDM, a través del mecanismo de extensibilidad estándar que ofrece KDM. Estos modelos KDM se podrán utilizar para reestructurar o agregar nueva funcionalidad cuántica a un nivel de abstracción superior, es decir, independientemente de la tecnología cuántica específica [1].
En nuestras tareas de I+D hemos constatado que, si en la ingeniería inversa de los sistemas el conocimiento extraído se representa holísticamente en un repositorio KDM, entonces se mejorará la reingeniería y la migración hacia los diferentes entornos cuánticos. En lo que respecta a UML (Unified Modeling Language) para el proceso de reingeniería, este estándar deberá ampliarse para que pueda representar e integrar programas cuánticos. Con ello los modelos KDM se podrían transformar automáticamente en representaciones UML y los ingenieros podrían modelar los aspectos cuánticos manualmente para los nuevos sistemas de destino.
Extender la investigación sobre modernización del software cuántico a sus aplicaciones prácticas para el desarrollo de software cuántico con QuantumPath® ha sido uno de los retos que hemos asumido. Para que las soluciones sean prácticas, de utilidad para el desarrollo de software, en el diseño y desarrollo de las herramientas de modernización debemos contemplar las diferentes perspectivas que esta investigación nos presenta:
· La existencia de diferentes lenguajes de programación tanto en el ámbito clásico como en el cuántico, por lo que este es otro de los retos a implementar en la solución práctica.
· La necesidad de modernizar algoritmos desarrollados en diferentes contextos tecnológicos:
o clásico – cuántico con QPath® – clásico
o cuántico – cuántico con QPath® – cuántico
QuantumPath® es un integrador natural de soluciones propias y de terceros, que soporta el desarrollo de algoritmos y Apps cuánticas en el contexto más adecuado para cada solución (100% agnóstico, semi agnóstico con DirectCode), a la que hemos añadido la capacidad de soportar importaciones/exportaciones de algoritmos desarrollados en otros entornos a la plataforma, previo proceso de modernización.
La solución software para hacer viable esta importante funcionalidad integradora la hemos implementado diseñando y desarrollando una aplicación de QPath® especializada en modernización del software: QrEngineer APP – QModernization (véase Figura 1).
QModernization implementa los siguientes procesos para hacer posible la modernización de software a QPath®:
· Gestión de proyectos de modernización.
· Análisis sintáctico de artefactos de código fuente para su modernización.
· Generación de modelos KDM.
· Transformación de modelos KDM a UML.
Figura 1. Página de inicio de QModernization
Expuesto a alto nivel, el sistema QModernization implementa las siguientes tareas:
· Crear un proyecto de modernización.
Figura 2. Formulario para crear un nuevo proyecto de modernización
· Añadir un nuevo circuito cuántico al catálogo de circuitos del proyecto de modernización, proporcionando su código fuente y los metadatos del circuito. La versión beta 1 de la herramienta, QrEngineer APP admite circuitos cuánticos desarrollados en los siguientes lenguajes:
o Microsoft Q# (Q Sharp)
o OpenQASM 3.0
Modernización de un algoritmo desarrollado en Q#
A continuación, mostraremos, paso a paso, un proyecto de modernización de un algoritmo desarrollado en Q#.
El primer paso es subir un circuito al catálogo de circuitos de QrEngineer APP:
Figura 3. Formulario de subida de un circuito cuántico al catálogo de circuitos de un proyecto
· Una vez adjuntado el circuito al proyecto, el usuario puede visualizar su código fuente, y los modelos KDM y UML generados por el sistema:
Figura 4. Visualización del código fuente de un circuito cuántico
Figura 5. Visualización del modelo KDM asociado a un circuito cuántico
Figura 6. Visualización del modelo UML asociado a un circuito cuántico
· Como utilidad, el sistema permite al usuario ver una representación visual del modelo UML generado, en forma de diagrama de actividad:
Figura 7. Diagrama de actividad asociado al modelo UML de un circuito cuántico
Resumen
Implementada la arquitectura y los requisitos fundamentales que hemos definido, y comprobada su validez práctica en la beta 1, los equipos de investigación y desarrollo continúan trabajando para ampliar sus procesos, funcionalidades y, sobre todo, para enriquecer la biblioteca de lenguajes de programación clásicos y cuánticos soportados por QrEngineer APP y, como resultado de ello:
· estamos investigando en la modernización de algoritmos desarrollados en los principales lenguajes de programación clásicos y cuánticos.
· continuamos ampliando la cantidad de proveedores soportados para la adaptación de circuitos desarrollados con diferentes SDK’s basados en Python.
· estamos diseñando las herramientas que apliquen, de forma avanzada, los resultados más importantes de todo el ciclo de modernización de software cuántico.
Basado en un diseño conceptual de QST, QModernization es el resultado de años de investigación y desarrollo por parte de un equipo de investigadores de aQuantum compuesto por científicos e ingenieros de QST, Grupo Alarcos y de aQuantum, trabajando en estas tareas con el objetivo de definir un modelo para la reingeniería y modernización del software cuántico, así como determinar la viabilidad técnica del desarrollo de las soluciones que lo hagan posible.
Sin lugar a duda que la modernización del software cuántico tal y como la visualizamos, desde la perspectiva de la ingeniería de software aplicada a herramientas, aún tiene un amplio recorrido para llegar a las herramientas case completas a las que aspiramos, pero consideramos que vale la pena el ejercicio de compartir estos primeros pasos en ese sentido y que, a partir de ello, vayamos mostrando el avance y madurez de estas herramientas.
Trabajar con QrEngineer APP facilita el proceso de migraciones de algoritmos desarrollados en otros entornos y lenguajes de programación a QuantumPath®. Además del ahorro de tiempo, utilizar las buenas prácticas de la reingeniería contribuye a preservar el conocimiento empresarial, posibilita el mantenimiento evolutivo de los sistemas de información heredados y reduce el riesgo de sus desarrollos y costes.
* El contenido central de este artículo es una versión actualizada del apartado “Modernización de sistemas cuánticos”, publicado por los autores como parte del libro Ingeniería del Software Cuántico & QuantumPath®. aQuantum, 2022.
[1] Pérez, R. Jiménez, L. Martínez, A. Peterssen, G. Ingeniería del Software Cuántico & QuantumPath®. Cap. 6: Modernización de sistemas cuánticos. aQuantum, 2022.