{"id":980,"date":"2018-05-30T21:48:08","date_gmt":"2018-05-31T00:48:08","guid":{"rendered":"http:\/\/157.92.27.101\/?p=980"},"modified":"2022-03-29T10:40:21","modified_gmt":"2022-03-29T13:40:21","slug":"como-se-comporta-un-software-2","status":"publish","type":"post","link":"https:\/\/icc.fcen.uba.ar\/en\/como-se-comporta-un-software-2\/","title":{"rendered":"\u00bfC\u00f3mo se comporta un software?"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last\" style=\"--awb-bg-size:cover;--awb-margin-bottom:0px;\"><div class=\"fusion-column-wrapper fusion-flex-column-wrapper-legacy\"><div class=\"fusion-text fusion-text-1\"><p><em><strong>En la actualidad el Instituto de Ciencias de la Computaci\u00f3n (ICC) cuenta con un \u00e1rea de Fundamentos de la Ingenier\u00eda de Software, donde se est\u00e1 trabajando en mejorar el entendimiento sobre el desarrollo de software y sistemas inform\u00e1ticos.<\/strong><\/em><!--more--><\/p>\n<p><span style=\"font-weight: 400;\">Estos sistemas cada vez tienen una complejidad mayor: no se trata solamente de que un software funcione de manera correcta sino tambi\u00e9n de comprender c\u00f3mo se comporta un programa, qu\u00e9 partes del software o el servicio deben componerse para realizar un tarea de manera conjunta o bien c\u00f3mo coordinar la comunicaci\u00f3n entre servicios en el contexto de la computaci\u00f3n distribuida.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Algunos de los investigadores que conforman el \u00e1rea estudian aspectos fundamentales de esta problem\u00e1tica desde la Teor\u00eda de la Concurrencia. Pero, de \u00bfqu\u00e9 hablamos cuando hablamos de \u201cconcurrencia\u201d? Es una propiedad de los sistemas en la cual los procesos de un c\u00f3mputo se realizan con cierta independencia y pueden interactuar entre ellos. Los c\u00e1lculos u operaciones pueden ser ejecutados en m\u00faltiples procesadores, o ejecutados en procesadores separados f\u00edsicamente o virtualmente en distintos hilos de ejecuci\u00f3n. De este modo, se pueden estudiar las t\u00e9cnicas de programaci\u00f3n que se usan para expresar la concurrencia entre tareas as\u00ed como tambi\u00e9n para resolver y detectar los problemas de protocolos de comunicaci\u00f3n y sincronizaci\u00f3n entre procesos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u201c<\/span><i><span style=\"font-weight: 400;\">Hoy en d\u00eda existe el sue\u00f1o de poder componer programas ensamblando piezas que ya est\u00e1n hechas. Esas piezas en general son servicios desarrollados previamente para cumplir una determinada tarea, lo que hace que no tengamos que escribir un c\u00f3digo desde cero. El problema que tenemos es definir qu\u00e9 combinaci\u00f3n de servicios nos sirve para un determinado requerimiento, qu\u00e9 algoritmos se pueden usar, mediante qu\u00e9 lenguajes de programaci\u00f3n y c\u00f3mo se van uniendo estos diferentes elementos para llegar a un resultado positivo<\/span><\/i><span style=\"font-weight: 400;\">\u201d, puntualiza Hern\u00e1n Melgratti, Investigador del ICC e integrante del grupo LAFHIS.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un ejemplo cotidiano de composici\u00f3n de servicios ser\u00eda el pago v\u00eda Internet con tarjeta de cr\u00e9dito. Si un comercio no dispone de ese servicio, contrata una aplicaci\u00f3n que le permite gestionar los pagos a trav\u00e9s de una plataforma web y s\u00f3lo se convierte en intermediario. El problema radica en lograr transacciones eficientes: si y solo si el cliente paga se le env\u00edan el producto que solicit\u00f3 y no puede haber ninguna situaci\u00f3n en que se le env\u00ede el producto sin que el servicio haya funcionado correctamente. Y se puede complementar el ejemplo: en el mercado tur\u00edstico online las transacciones de compra de pasajes a\u00e9reos o reservas de un hotel en tiempo real presentan enormes dificultades para resolver. M\u00e1s all\u00e1 de la calidad del sistema electr\u00f3nico 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\u00edfico. Lograr coordinar estas actividades a una escala de miles o millones de transacciones simult\u00e1neas resulta sumamente complejo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u201c<\/span><i><span style=\"font-weight: 400;\">Si queremos que una aplicaci\u00f3n siga funcionando inclusive cuando se pierde la conexi\u00f3n a Internet, no podemos pretender que todos vean lo mismo de ese estado. Ese es un problema cl\u00e1sico de consistencia d\u00e9bil en Base De Datos, porque la informaci\u00f3n de ese estado no es \u00fanica y diferentes personas ven diferente informaci\u00f3n de un mismo servicio. Nuestra investigaci\u00f3n en este aspecto consiste en describir formalmente el problema, abstraerlo y estudiar el fen\u00f3meno a nivel micro para entender c\u00f3mo 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\u00f3n. Todo esto lo hacemos a trav\u00e9s de t\u00e9cnicas de an\u00e1lisis de programas<\/span><\/i><span style=\"font-weight: 400;\">\u201d, explica Melgratti.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para avanzar en esta ardua tarea, los investigadores del ICC recurren a los llamados \u201cTipos Comportamentales\u201d, una t\u00e9cnica de an\u00e1lisis est\u00e1tico surgida hace 20 a\u00f1os que busca describir la manera en que un programa se comporta estudiando sus propiedades m\u00ednimas, lo que permitir\u00eda escribir programas de manera m\u00e1s f\u00e1cil, m\u00e1s r\u00e1pida y con menos errores. Dentro de esta l\u00ednea de trabajo, se utilizan los Tipos-Sesi\u00f3n (<\/span><i><span style=\"font-weight: 400;\">Session Types<\/span><\/i><span style=\"font-weight: 400;\">) que consisten en tomar un programa, analizar una caracter\u00edstica o propiedad de su lenguaje de programaci\u00f3n y determinar si el programa tendr\u00e1 o no errores de comunicaci\u00f3n. Una de las limitaciones de esta t\u00e9cnica es que no puede garantizar que todo programa correcto pueda ser clasificado como tal, ya que existen limitaciones te\u00f3ricas (de decidibilidad).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u201c<\/span><i><span style=\"font-weight: 400;\">Aunque hoy no se alcance una t\u00e9cnica 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\u00f3n m\u00e1s programas vamos a poder abarcar\u201d, <\/span><\/i><span style=\"font-weight: 400;\">detalla el investigador y doctor en ciencias de la computaci\u00f3n<\/span><i><span style=\"font-weight: 400;\">. Y concluye, \u201cel gran desaf\u00edo que tenemos es ayudar a que los programadores puedan usar estas herramientas funcionales de forma m\u00e1s accesible y sencilla<\/span><\/i><span style=\"font-weight: 400;\">\u201d.<\/span><\/p>\n<blockquote>\n<p><b><img decoding=\"async\" class=\"lazyload size-full wp-image-978 alignleft\" src=\"https:\/\/157.92.27.101\/wp-content\/uploads\/2018\/05\/noticia_4_recuadro.jpg\" data-orig-src=\"https:\/\/157.92.27.101\/wp-content\/uploads\/2018\/05\/noticia_4_recuadro.jpg\" alt=\"\u00bfC\u00f3mo se comporta un software?_ICC\" width=\"219\" height=\"275\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27219%27%20height%3D%27275%27%20viewBox%3D%270%200%20219%20275%27%3E%3Crect%20width%3D%27219%27%20height%3D%27275%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/icc.fcen.uba.ar\/wp-content\/uploads\/2018\/05\/noticia_4_recuadro-200x251.jpg 200w, https:\/\/icc.fcen.uba.ar\/wp-content\/uploads\/2018\/05\/noticia_4_recuadro.jpg 219w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 219px) 100vw, 219px\" \/>El Proyecto BEHAPI<\/b><\/p>\n<p><i><span style=\"font-weight: 400;\">\u201cDesde el ICC, a trav\u00e9s 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\u00e1ticas en su producci\u00f3n de software. Participan m\u00e1s de 20 partners y, junto a McAfee, somos los \u00fanicos representantes de Argentina. El proyecto tender\u00e1 un puente entre instituciones europeas y el resto del mundo as\u00ed como tambi\u00e9n entre el sector acad\u00e9mico y el industrial. La idea es comenzar a ejecutar el proyecto en marzo de 2018. Estar insertos en esta iniciativa nos ayudar\u00e1 a llevar a cabo estad\u00edas mixtas de colaboraci\u00f3n, donde nuestros investigadores ir\u00e1n a trabajar a compa\u00f1\u00edas y\/o universidades de Europa, conocer\u00e1n su realidad, aprender\u00e1n de estos problemas concretos e intercambiar\u00e1n nuevo conocimiento y, al mismo tiempo, los investigadores de Europa podr\u00e1n venir a nuestro a nuestro pa\u00eds con el mismo prop\u00f3sito\u201d<\/span><\/i><span style=\"font-weight: 400;\">, destaca Hern\u00e1n Melgratti.<\/span><\/p>\n<\/blockquote>\n<p>&nbsp;<\/p>\n<\/div><div class=\"fusion-clearfix\"><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>En la actualidad el Instituto de Ciencias de la Computaci\u00f3n (ICC) cuenta con un \u00e1rea de Fundamentos de la Ingenier\u00eda de Software, donde se est\u00e1 trabajando en mejorar el entendimiento sobre el desarrollo de software y sistemas inform\u00e1ticos.<\/p>\n","protected":false},"author":3,"featured_media":977,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71,12],"tags":[38,34],"class_list":["post-980","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-actualidad","category-noticias","tag-fundamentos","tag-ingenieria-software"],"_links":{"self":[{"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/posts\/980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/comments?post=980"}],"version-history":[{"count":4,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/posts\/980\/revisions"}],"predecessor-version":[{"id":2170,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/posts\/980\/revisions\/2170"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/media\/977"}],"wp:attachment":[{"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/media?parent=980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/categories?post=980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/icc.fcen.uba.ar\/en\/wp-json\/wp\/v2\/tags?post=980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}