¿Cómo se comporta un software?

En la actualidad el Instituto de Ciencias de la Computación (ICC) cuenta con un área de Fundamentos de la Ingeniería de Software, donde se está trabajando en mejorar el entendimiento sobre el desarrollo de software y sistemas informáticos.

Estos sistemas cada vez tienen una complejidad mayor: no se trata solamente de que un software funcione de manera correcta sino también de comprender cómo se comporta un programa, qué partes del software o el servicio deben componerse para realizar un tarea de manera conjunta o bien cómo coordinar la comunicación entre servicios en el contexto de la computación distribuida.

Algunos de los investigadores que conforman el área estudian aspectos fundamentales de esta problemática desde la Teoría de la Concurrencia. Pero, de ¿qué hablamos cuando hablamos de “concurrencia”? Es una propiedad de los sistemas en la cual los procesos de un cómputo se realizan con cierta independencia y pueden interactuar entre ellos. Los cálculos u operaciones pueden ser ejecutados en múltiples procesadores, o ejecutados en procesadores separados físicamente o virtualmente en distintos hilos de ejecución. De este modo, se pueden estudiar las técnicas de programación que se usan para expresar la concurrencia entre tareas así como también para resolver y detectar los problemas de protocolos de comunicación y sincronización entre procesos.

Hoy en día existe el sueño de poder componer programas ensamblando piezas que ya están hechas. Esas piezas en general son servicios desarrollados previamente para cumplir una determinada tarea, lo que hace que no tengamos que escribir un código desde cero. El problema que tenemos es definir qué combinación de servicios nos sirve para un determinado requerimiento, qué algoritmos se pueden usar, mediante qué lenguajes de programación y cómo se van uniendo estos diferentes elementos para llegar a un resultado positivo”, puntualiza Hernán Melgratti, Investigador del ICC e integrante del grupo LAFHIS.

Un ejemplo cotidiano de composición de servicios sería el pago vía Internet con tarjeta de crédito. Si un comercio no dispone de ese servicio, contrata una aplicación que le permite gestionar los pagos a través de una plataforma web y sólo se convierte en intermediario. El problema radica en lograr transacciones eficientes: si y solo si el cliente paga se le envían el producto que solicitó y no puede haber ninguna situación en que se le envíe el producto sin que el servicio haya funcionado correctamente. Y se puede complementar el ejemplo: en el mercado turístico online las transacciones de compra de pasajes aéreos o reservas de un hotel en tiempo real presentan enormes dificultades para resolver. Más allá de la calidad del sistema electrónico se pueden dar situaciones de doble venta de un ticket o de diferencias de disponibilidad de asientos o de habitaciones que cada usuario ve en la web en un momento específico. Lograr coordinar estas actividades a una escala de miles o millones de transacciones simultáneas resulta sumamente complejo.

Si queremos que una aplicación siga funcionando inclusive cuando se pierde la conexión a Internet, no podemos pretender que todos vean lo mismo de ese estado. Ese es un problema clásico de consistencia débil en Base De Datos, porque la información de ese estado no es única y diferentes personas ven diferente información de un mismo servicio. Nuestra investigación en este aspecto consiste en describir formalmente el problema, abstraerlo y estudiar el fenómeno a nivel micro para entender cómo se comporta cada programa. Luego con las propiedades estudiadas del programa, buscamos que las diferentes partes de un servicio se coordinen en forma eficiente para desarrollar una tarea o una transacción. Todo esto lo hacemos a través de técnicas de análisis de programas”, explica Melgratti.

Para avanzar en esta ardua tarea, los investigadores del ICC recurren a los llamados “Tipos Comportamentales”, una técnica de análisis estático surgida hace 20 años que busca describir la manera en que un programa se comporta estudiando sus propiedades mínimas, lo que permitiría escribir programas de manera más fácil, más rápida y con menos errores. Dentro de esta línea de trabajo, se utilizan los Tipos-Sesión (Session Types) que consisten en tomar un programa, analizar una característica o propiedad de su lenguaje de programación y determinar si el programa tendrá o no errores de comunicación. Una de las limitaciones de esta técnica es que no puede garantizar que todo programa correcto pueda ser clasificado como tal, ya que existen limitaciones teóricas (de decidibilidad).

Aunque hoy no se alcance una técnica para una propiedad relevante que se aplique a todos los programas posibles, cuanto mejor ese sistema logre unir la propiedad relevante con el lenguaje de programación más programas vamos a poder abarcar”, detalla el investigador y doctor en ciencias de la computación. Y concluye, “el gran desafío que tenemos es ayudar a que los programadores puedan usar estas herramientas funcionales de forma más accesible y sencilla”.

¿Cómo se comporta un software?_ICCEl Proyecto BEHAPI

“Desde el ICC, a través del grupo LAFHIS, estamos participando en un proyecto de la comunidad europea denominado BEHAPI (Behavioural APIs), que consiste en acercarles estas herramientas a las empresas que actualmente desarrollan servicios y tienen estas problemáticas en su producción de software. Participan más de 20 partners y, junto a McAfee, somos los únicos representantes de Argentina. El proyecto tenderá un puente entre instituciones europeas y el resto del mundo así como también entre el sector académico y el industrial. La idea es comenzar a ejecutar el proyecto en marzo de 2018. Estar insertos en esta iniciativa nos ayudará a llevar a cabo estadías mixtas de colaboración, donde nuestros investigadores irán a trabajar a compañías y/o universidades de Europa, conocerán su realidad, aprenderán de estos problemas concretos e intercambiarán nuevo conocimiento y, al mismo tiempo, los investigadores de Europa podrán venir a nuestro a nuestro país con el mismo propósito”, destaca Hernán Melgratti.

 

2022-03-29T10:40:21-03:00 30/May/2018|Actualidad, Noticias|
Go to Top