Transformación y brecha digital: desafíos post cuarentena
18/05/2020Tráfico de internet nacional aumentó en un 46% tras liberación gratuita de conocido videojuego
21/05/2020Hace algunos días, Google y Apple anunciaron la liberación de sus códigos, de modo que los países y desarrolladores puedan crear aplicaciones que permitan notificar y hacer seguimiento de áreas con exposición al covid-19, e integrarla a dispositivos con estos sistemas.
La noticia volvió a reactivarse esta semana, tras el anuncio del aumento de contagios de covid-19 en el país por parte del Ministerio de Salud este miércoles 20 de mayo, confirmando 4.038 nuevos contagios y 53.617 infectados en todo el territorio nacional.
Tras el anuncio muchos usuarios y desarrolladores plantearon interrogantes respecto al uso que se le dará a los datos de las personas y cuántos datos están dispuestos a ceder los usuarios a cambio del rastreo de este virus. Pero más allá del debate sobre el acceso a la información y la geolocalización de los casos, hay una pregunta que se repitió aún más entre los usuarios: ¿y cómo se construye una aplicación?
Un desarrollo de software de aplicación, comúnmente llamado app, es el o los programas diseñados para que realicen tareas que son coordinadas para el beneficio de un usuario. Por ejemplo, los procesadores de texto, un navegador web, reproductor de archivos multimedia, e incluso los juegos que tienes instalados en tu celular.
En palabras del director de Servicios de Tecnologías de la Universidad de Chile, José Miguel Piquer, “el software es un producto muy nuevo, y no nos ha sido fácil definirlo ni entender bien qué es. Básicamente yo codifico en una larga lista de instrucciones al computador lo que yo quiero que haga, y es a lo que llamamos un programa”.
El ejemplo más simple es el primer ejercicio que se le da a un estudiante mechón: un programa que recibe un número y me escribe el resultado de sumarle uno. Las instrucciones serían algo así como: lea un número, súmele uno, escriba el resultado. Parece algo súmamente inútil cuando uno lo aprende, y parece totalmente distinto a un programa de inteligencia artificial que aprende a jugar ajedrez. Sin embargo, en el fondo siguen siendo lo mismo: un conjunto de instrucciones al computador. Lo que ocurre es que ese conjunto es cada vez más grande, y permite hacer algunas ‘magias’ como ejecutarse muchas veces, llamarse a sí mismo e incluso modificarse a sí mismo, añade el también académico del Departamento de Ciencias de la Computación.
Por su parte, el subdirector de Desarrollo de DSTI, Pablo Valenzuela, añade que “en su versión más básica, un proceso de desarrollo implica etapas de análisis, diseño, implementación y pruebas. Hoy generalmente se trabaja con procesos iterativos e incrementales donde estas etapas se ejecutan en ciclos cortos de trabajo. De este modo, los proyectos pueden detectar problemas en etapas tempranas y cuentan con la oportunidad de cambiar de rumbo, en caso que sea necesario”.
Al contrario de lo que muchos creen, son diversos los profesionales que participan en este tipo de procesos. José Miguel Piquer agrega que “la construcción de un software implica generar todo ese código, probarlo, hacerlo utilizable por el usuario final y lograr ponerlo en producción. Eso requiere programadores, por supuesto, pero también otros profesionales como diseñadores de la aplicación y su interfaz, arquitectos de software que definen cómo ese código va a interactuar con el resto de los sistemas, integradores que pegan estas componentes unas con otras, ingenieros de sistemas que instalan, monitorean y construyen los ambientes donde estos softwares funcionan, ingenieros de redes y de hardware que administran la infraestructura física donde todo esto opera”.
Pero no se trata de un trabajo estático ni mucho menos repetitivo. Evoluciona constantemente según se va actualizando los lenguajes de programación, los gustos e intereses de las personas y sus expectativas de hasta dónde podemos llegar con la tecnología. En línea con lo anterior, Pablo Valenzuela añade que “hoy es posible ver que el Diseño de Experiencia de Usuario ha tomado un rol protagonista en la construcción de productos de software, demostrando que la cercanía permanente con clientes y usuarios finales mejora significativamente el éxito de adopción del software construido”.
En el caso de la Universidad de Chile, el profesor Piquer comenta que han optado por realizar los desarrollos de las principales herramientas y plataformas de manera interna. “La industria ha evolucionado desde tener todo el desarrollo interno a externalizarlo todo, para luego volver a desarrollar internamente. No hay una solución mágica todavía. Nuestra posición es que hay un nivel básico de plataforma central que debe ser desarrollado y mantenido por la misma Universidad: las bases de datos y las interfaces oficiales a ellas deben ser definidas, desarrolladas y mantenidas por nuestro equipo”.
De todas maneras, remarca que no es una definición tajante. “Las aplicaciones que utilizan esas interfaces no tienen por qué ser desarrolladas por nosotros. Si definimos bien nuestros estándares, y controlamos cómo se desarrolla y cómo se controlan esos desarrollos para asegurar que respeten nuestras políticas (tecnológicas, de seguridad y de uso de los datos), esas aplicaciones las pueden desarrollar terceros. Es el único camino viable que vemos hacia un mundo donde todos necesitan desarrollar software para sus propios fines y es imposible suponer que vamos a tener capacidad central de desarrollar todo lo que la Universidad digital del futuro va a necesitar”, finaliza.
¿Qué es código fuente?
Entendemos por “código fuente” al conjunto de instrucciones que componen los diferentes programas o aplicaciones, escrito en un formato que es modificable por el ser humano. Tal como explica el director de DSTI, José Miguel Piquer, “el computador recibe código binario, que es muy difícil de manejar y entender para los seres humanos. Entonces, desde muy temprano en la computación, se crearon lenguajes de programación, que son para que los humanos los escriban y los lean, y es en lo que se escribe el código fuente. Luego, se traducen a código binario (lenguaje de máquina decíamos en los viejos tiempos)”.
“Esta separación permite hacer algo que es muy peligroso: entregar el código binario solamente y guardar el código fuente en otra parte, o incluso esconderlo, ya sea por razones comerciales o de seguridad. Esto ha creado situaciones reales en las que hay código binario ejecutando hoy, ¡pero nadie tiene el código fuente que le corresponde, por lo que nunca más podremos modificarlo ni entenderlo! Es muy importante siempre entregar el código fuente junto con el binario, y es algo que cada vez es más relevante para poder garantizar la mantención, la seguridad y la verificación que el software está bien construido”, remarca.