Interoperabilidad: formatos

Interoperabilidad. Si has trabajado con sistemas TI, estoy seguro de que has oído esta palabra en más de una ocasión. De hecho, la definición de la palabra es clara y directa. Según el IEEE, la interoperabilidad es la capacidad de dos o más sistemas o componentes para intercambiar información y utilizar la información intercambiada. Sencillo, ¿verdad? No obstante, en la práctica, la interoperabilidad es un factor de máxima importancia al trabajar con un sistema, y puede lograrse mediante estrategias muy diferentes. El resultado es, que cuando un sistema se declara interoperable, necesitamos saber a qué se refiere y cómo lo ha logrado. En este artículo vamos a repasar las estrategias más comunes para lograr interoperabilidad y qué suponen las mismas en los sistemas de origen y destino.

Un buen punto de partida es la información en sí misma. De nada sirve que un sistema nos de información si nos es imposible interpretarla. A modo de ejemplo, imaginemos una aplicación web que trabaja con un formato propietario de datos. Esta aplicación puede facilitarnos la manera de solicitar y recibir datos, solo para encontrarnos en la tesitura de no poder leerlos. De hecho, incluso si se nos ofrece una guía para entender el formato propietario, automatizar el proceso de leer los mismos requiere una decodificación específica. Si tenemos que programar un método para cada sistema al que nos conectemos, tenemos un grave problema de escalabilidad.

Por suerte, lo común en la mayoría de sistemas es trabajar con formatos interoperables de datos. Estos formatos se utilizan en la gran mayoría de sistemas, y existen varias alternativas dependiendo del tipo y naturaleza de los datos.

A modo de ejemplo, si tenemos una serie de datos, es posible que el formato que la contenga sea CSV, archivo que separa por comas y líneas series de datos, de forma similar a una tabla. De esta manera, la primera línea compone los nombres de las columnas, mientras que el resto de líneas forman una fila. Este formato, sin embargo, es algo limitado, ya que no permite representar una estructura compleja (más allá de una tabla) ni distingue entre los valores que contiene. 

En el siguiente paso, encontramos formatos como RDF, XML o JSON, que disponen de la capacidad de incluir metadatos, es decir, información sobre el tipo de datos que contienen. Estos formatos tienen una estructura dinámica, a veces incluso entrelazada, en la que cada objeto se define completamente incluyendo la descripción de la información y la información en sí, lo cual resulta en una mayor simplicidad para leerlos, modificarlos y generarlos de forma lógica por sistemas externos.

Por último, encontramos formatos más específicos para situaciones concretas, como GeoJSON, KML y similares, especializados en información geográfica en este caso.

Como vemos, existen muchas posibilidades interoperables. Pero, ¿no queríamos huir de tener que trabajar con muchos formatos diferentes? Lamentablemente, no hay un tipo de formato mágico que desbanque al resto, ya que, en el mundo del intercambio de datos, la eficiencia es primordial, y cada formato tiene sus ventajas dependiendo del tipo de la naturaleza de la información y ámbito de aplicación. No obstante, existen librerías para el tratamiento de formatos interoperables en la gran mayoría de lenguajes, lo cual facilita enormemente su integración y manejo.

Por último, me gustaría destacar que reducir la interoperabilidad a los formatos de datos, o incluso al intercambio de información es un concepto erróneo. Cada vez más frecuentemente, diferentes organizaciones buscan la interoperabilidad mediante procesos, herramientas y protocolos que no tienen por qué ser si quiera digitales. De esta forma, tenemos normas ISO que buscan normalizar sectores tan diversos como la medicina, la agricultura, el transporte o el comercio. Lo que sí queda claro es que hacer el esfuerzo de que cualquier herramienta sea interoperable, a poder ser desde su diseño, otorga grandes ventajas al mismo y ahora muchos dolores de cabeza durante el camino.

Interoperabilidad: formatos