El software cuántico, dentro de la tecnología disruptiva de computación cuántica necesita ser planificado, diseñado, implementado, estimado, probado, asegurada su seguridad y calidad, evolucionado y mantenido.
Esto significa que la ingeniería del software cuántico debe ser desarrollada como una nueva disciplina, tanto a nivel académico como industrial, a lo largo del nuevo ciclo de vida de software cuántico (Quantum Software Lifecycle).
La computación cuántica se está convirtiendo en un área cada vez más prometedora con importantes inversiones públicas y privadas para resolver problemas en diferentes sectores, que antes no eran posibles por tiempo o procesamiento gracias a los ordenadores cuánticos como, por ejemplo:
- Privacidad y criptografía: autenticación, certificación de aleatoriedad.
- Química: simulaciones de moléculas complejas, descubrimiento de nuevos materiales diseño molecular avanzado, etc.
- Energía y agricultura: mejor distribución de recursos, producción de amoniaco, modelado de degradación de activos, etc.
- Logística y cadena de suministro: optimización de problemas en compras, producción y distribución, optimización de rutas de los vehículos, etc.
- Medicina y salud: descubrimiento de fármacos, cirugías de alta precisión y no invasivas, medicina personalizada, predicción de prescripción de terapias, etc.
- Programas de seguridad nacional y defensa
En este contexto hay múltiples aplicaciones, que serán posibles desarrollar, y donde el software cuántico es necesario para aprovechar al máximo esta tecnología cuántica disruptiva.
Sistemas Híbridos Cuánticos
Todavía queda mucho tiempo hasta que los ordenadores cuánticos pueden ser utilizados de forma operativa por las organizaciones y habrá un tiempo donde convivirán conjuntamente con las computadoras no-cuánticas. Además, es posible que muchas necesidades de negocio se resuelvan sin necesidad de utilizar únicamente computadores cuánticos.
Por tanto, los ingenieros de software cuántico deberán integrar nuevos algoritmos cuánticos con los sistemas de información clásicos accediendo a computadores cuánticos que están en la nube, ya que este es el proceso que se seguirá en los próximos años debido a los altos costes y que muchas operaciones de negocio son demasiado simples como para que compense hacerlo de otra manera.
Este contexto nos lleva a un escenario de sistemas legados donde la reingeniería o la modernización del software se vuelve necesaria para integrar los algoritmos cuánticos y ser capaces de incluir en los sistemas de información clásicos operaciones críticas de negocio.
Calidad del Software Cuántico
La calidad del software cuántico tiene dos perspectivas: el software como producto y el proceso que se debe seguir para desarrollar este tipo de software. El control y aseguramiento de la calidad tanto de producto como de proceso ha sido ampliamente estudiada en la ingeniería de software clásica. Sin embargo, esta área debe ser nuevamente reformulada para el software cuántico.
Una de las máximas en cualquier ámbito de mejora es “lo que no se mide, no se puede mejorar” y el software cuántico no se escapa a esta acepción. Por tanto, la medición de la calidad del software cuántico y cómo estas métricas deben ser usadas en todo el ciclo de vida de desarrollo es uno de los retos para abordar en la calidad del software cuántico.
Otro de los retos es la verificación y validación del software cuántico el cual todavía está en la infancia. Las pruebas en este tipo de software son bastante diferentes a las que se deben realizar en el software clásico ya que este es determinista bajo unas determinadas condiciones y contexto. Sin embargo, el software cuántico no es tan determinista y explora un determinado espacio para encontrar la mejor solución posible. En realidad, varias ejecuciones del mismo código de software cuántico pueden llevar a diferentes soluciones. En un contexto de incertidumbre y no determinista, las pruebas del software cuántico son más complejas y es necesario investigar en nuevos métodos de detección de defectos.
Gestión de Proyectos de Software Cuántico
La ingeniería de software cuántico debe ofrecer software cuántico que cumpla con el objetivo y los requisitos comerciales iniciales y, al mismo tiempo, se satisfagan las limitaciones de calidad, tiempo y coste. Las metodologías para desarrollar programas cuánticos deben crearse o adaptarse a partir de las existentes. También se deben proporcionar métodos de estimación de esfuerzo para el desarrollo de software cuántico, que por supuesto diferirán de los métodos clásicos de estimación de software.
Programación de Software Cuántico
Las arquitecturas cuánticas necesitan de nuevas técnicas y herramientas para programar, ya que la mayor parte de las actuales no tienen sentido en el nuevo escenario. Además, los ordenadores cuánticos y los principios en los que se basan introducen nuevos conceptos como Superposición, Entrelazamiento o Decoherencia que no existen en la ingeniería de software clásica. Por tanto, un nuevo paradigma de programación debe ser investigado.
Proveedores de Hardware Cuántico
No es un reto propiamente dicho del ciclo de vida de software cuántico como tal, pero impacta en el desarrollo de un modo lateral. Cada uno de los proveedores de hardware cuántico tiene su propia visión y herramientas para ofrecer servicios. Esto significa que hay retos relacionados con: cómo consumir estos servicios, cuáles son las limitaciones actuales de sus computadoras, facilidades de programación, etc.
La carrera de la computación cuántica ha comenzado y las necesidades de software cuántico se incrementarán en los próximos años con innovadores métodos, técnicas y herramientas que deberán ser investigadas para todo el ciclo de vida. Da igual la tecnología o el dominio, la ingeniería de software siempre será una disciplina que considerar.