Un nuevo método de ingeniería de software desenmaraña las complejidades del diseño de sistemas
Movidos por la necesidad de simplificar el proceso —difícil y costoso— de diseño de software, el equipo del proyecto LIBPR (Liberating programming) reflexionaron sobre el tema y se percataron de que los profesionales, con frecuencia, son capaces de describir el comportamiento de sus sistemas (antes, durante y después de su desarrollo) de forma clara y precisa, con independencia de si cuentan con conocimientos de programación informática. En vista de ello, el equipo revisó y transformó drásticamente los preceptos establecidos en relación con el correcto diseño de sistemas de software. Basándose en la invención inicial de la programación basada en escenarios (SBP, scenario-based programming) y su lenguaje —visual y basado en diagramas— de gráficos de secuencia en tiempo real (LSC, live sequence charts), el equipo demostró que un software complejo pueden encajar con las descripciones conductuales que figuran en los documentos de requisitos y en los manuales de uso. En lugar del enfoque de diseño común, donde hay que diseñar cuidadosamente intrincada secuencias en serie de comandos (programas) para guiar el comportamiento del sistema de modo que satisfaga los requisitos y las restricciones fijadas, en la SBP los propios requisitos son plenamente ejecutables, lo cual libera la programación de muchas de sus restricciones convencionales. Dichos requisitos están codificados de tal modo que permite a un ordenador inspeccionarlos uno por uno en todos los pasos de la ejecución y determinar su siguiente paso según lo que dictan que se puede, debe o no debe hacer en ese punto (así, los comportamientos prohibidos forman parte del programa). Por tanto, los requisitos se transforman en programa. En gran medida, vienen a sustituir al programa tradicional. Además de brindar formas revolucionarias de estructurar y después ejecutar los programas, este método ha proporcionado formas nuevas y naturales de llevar a cabo la propia labor de programación. En un simulador or interfaz gráfica de usuario (GUI), el programador desencadena las acciones (play-in) que determinado usuario o entorno presentaría al sistema, seguidas de las reacciones deseadas del sistema. Seguidamente, la secuencia conductual registrada se transforma automáticamente en el escenario correspondiente. Este encaje del programa con la forma en que la gente entiende el sistema permite, asimismo, la programación en un lenguaje natural (controlado). Es decir, estando sometidos a las restricciones impuestas por las reglas gramaticales, una oración como «cuando el usuario pulsa el botón rojo, se enciende la luz» es interpretada automáticamente y traducida en un escenario programado ejecutable formal. La suma de estas oraciones constituye el sistema final. Una ventaja esencial de este método es la capacidad de codificar cada nuevo requisito de manera incrementar, cambiando poco o nada en las especificaciones existentes, y de utilizar herramientas especializadas para entender cómo se comportará el sistema cuando todos los escenarios se ejecuten a la vez como sistema. El proyecto también deparó algoritmos sofisticados y herramientas basadas en métodos como la comprobación de modelos (model-checking), solución de SMT y síntesis de programas para verificar la corrección de los programas basados en escenarios y para repararlos automáticamente cuando se detectan comportamientos no deseados o bien escenarios contradictorios. La labor realizada incluyó además técnicas de verificación compositiva, que consiste en verificar el sistema comprobando los distintos escenarios constituyentes. El equipo consiguió ampliar notablemente el método basado en escenarios, superando con creces el lenguaje visual de LSC, al incluir implementaciones en lenguajes informáticos estándar como Java, C, C++, C#, Erlang y JavaScript. La aplicabilidad de la SBP se demostró en diversas aplicaciones, por ejemplo automatización industrial, control automovilístico y aeronáutico y modelos biológicos.