Conceptos Básicos de Aplicaciones – ¿Qué necesito saber?

UK flagEEUU flag

Conceptos básicos junto con nuestra selección de Aplicaciones Móviles,  Aplicaciones para PC con sistema operativo Windows, Aplicaciones Educativas y Aplicaciones para empresas.

¿Qué es una aplicación?

Una aplicación es un termino muy genérico que se refiere a una solución tecnológica que realiza una tarea, nos resuelve  un problema o realiza un trabajo. Una aplicación puede ser un programa, un conjunto de programas, varios programas conectados entre si por redes de comunicación, etc. En el termino aplicación NO se incluye el hardware, ordenadores, redes, discos, etc. Cuando nos referimos a una aplicación hablamos solamente del software o programas y los datos utilizados por dichos programas.

 Programa  Sistema Operativo  SaaS VoIP
 Freeware  Base de Datos  Marketplace  IMS
 Shareware  Computación Distribuida  M2M
 Big Data Internet de las cosas

Internet of the Things



Programa

Son las aplicaciones más clásicas. Dependiendo de la complejidad será un único programa o un conjunto de programas. Se instala en un ordenador y podemos ejecutarlo tantas veces como queramos. El programa más utilizada en el mundo es el editor de textos seguido de la hoja de cálculo. Por supuesto hay millones de programas distintos realizando una amplia variedad de tareas pero estos dos programas (o conjunto de programas) son los más utilizados.

Freeware

Literalmente es software gratuito. Software que podemos descargar de internet gratuitamente y usar libremente. Hoy en día hay multitud de aplicaciones freeware muy completas y fiables. Entonces ¿Cual es el negocio para los desarrolladores? El uso particular de freeware es gratuito pero, cuando lo utilizamos para una aplicación profesional, necesitamos tener un soporte para que, en caso de problemas, alguien pueda resolvernos ese problema. Un usuario particular puede prescindir de este soporte pero un usuario profesional lo necesita. Este soporte no es gratuito y es la fuente de ingresos de estas compañías. Son empresas muy eficientes y con estos ingresos son suficientes para su funcionamiento. Por supuesto no tienen el músculo desarrollador de una empresa que vende el software pero también se gastan bastante menos en publicidad y en labor comercial.

Shareware

Este concepto tiene difícil traducción y es mejor utilizarlo en su terminología Inglesa. Las aplicaciones shareware son aplicaciones que se pueden utilizar de una manera parcial o totalmente durante un tiempo. Si se utilizan de una manera parcial es necesario comprar la versión completa. Si está limitada en tiempo deja de funcionar pasado un periodo y es necesario pagar para continuar utilizandola. El objetivo es demostrar de una manera gratuita las ventajas de la aplicación pero forzando de alguna manera su compra. Algunas aplicaciones muestran continuamente un mensaje indicando que es la versión gratuita y es necesario comprarla para que desaparezca ese mensaje. Cada desarrollador decide que opción utilizar para forzar, de alguna manera, al usuario para que compre finalmente la aplicación.

Sistema Operativo

Es el programa básico y el primero que comienza a funcionar en un ordenador y, hoy en día, también en nuestros dispositivos móviles y teléfonos. Cuando un dispositivo se enciende su primera misión es hacer funcionar el sistema operativo. A continuación el sistema operativo se encargará de todo: atender al teclado, manejar la pantalla, archivos, arrancar y parar aplicaciones, etc. Los sistemas operativos tienen también una serie de aplicaciones incorporadas que realizan algunas tareas básicas como un visor de archivos, gestor de archivos, etc. .  Cuando un desarrollador crea una aplicación no tiene que pensar en como manejar la pantalla o el teclado, o conectarse a internet. La aplicación encarga esas tareas al sistema operativo que está siempre funcionando. Por eso cuando adquirimos una aplicación tenemos que asegurarnos que adquirimos la version para nuestro sistema operativo ya que una aplicación diseñada para un sistema operativo no funciona sobre otro. Normalmente los creadores de aplicaciones diseñan sus aplicaciones con distintas versiones para distintos sistemas operativos pero tenemos que elegir la versión adecuada para nuestros sistema operativo.

Base de datos

Existen muchas aplicaciones que necesitan manejar una gran cantidad de datos. Por ejemplo una aplicación de contabilidad para una empresa, gestión de reservas, aplicaciones para hospitales, etc. El manejo de estos datos es muy importante ya que no se pueden perder, se deben almacenar de manera segura, debe ser posible guardar una cantidad grande de datos. En esos casos los desarrolladores utilizan un software de gestión de datos ya desarrollado y fiable y desarrollan su aplicación para que funcione en conjunto. Por lo tanto las bases de datos son programas que funcionan por debajo y el usuario no se da cuenta de que se están utilizando. La base de datos más utilizada en el mundo es la de la empresa Oracle. Esta empresa es a las bases de datos como Microsoft es a los sistemas operativos. Las bases de datos se dividen en dos grandes grupos: Relacionales y LDAP (Lightweight Directory Access Protocol). Las bases de datos relacionales utilizan el lenguaje SQL (Structured Query Language) y son más intuitivas de manejo ya que manejan tablas relacionadas entre si mientras que las LDAP utilizan objetos que es un concepto más complejo de utilizar. Las bases de datos LDAP se suelen utilizar cuando es necesario una velocidad de lectura rápida. Otro factor importante es que el protocolo LDAP es muy eficiente y robusto cuando la aplicación se conecta a una base de datos remota. La base de datos Oracle es relacional, también de la empresa Oracle y también relacional es MySQL aunque esta es freeware.   Otro ejemplo de bases de datos freeware es Postgres. El uso de bases de datos freeware es bastante habitual debido al quasi monopolio de Oracle a pesar de los riesgos que conlleva el uso de freeware para una labor tan importante.

Computación Distribuida

También se conoce como computación en cluster, computación en grid o por sus términos en Inglés: cluster computing, grid computing. La computación distribuida surge como una manera más económica de soportar aplicaciones que necesitan mucha potencia de cálculo como las aplicaciones de big data que manejan ingentes cantidades de datos. Anteriormente la única solución era la compra de grandes ordenadores muy potentes y muy caros. La computación distribuida utiliza ordenadores comerciales con una buena relación potencia/precio. La ejecución de la aplicación se distribuye entre todos los ordenadores que trabajan en paralelo por lo que la potencia resultante es la suma de las potencias de todos los ordenadores pero a un precio muy razonable. Además, no hay límite, si necesitamos más potencia se añaden más ordenadores del mismo tipo o similares, no hay ningún elemento común que se debe cambiar o ampliar. Para que todos los ordenadores funcionen como un conjunto es necesario instalar un software de gestión. El más famoso es Hadoop de Apache. Hadoop monta el entorno de soporte a las aplicaciones y un sistema de ficheros distribuido entre todas las máquinas. Por supuesto las aplicaciones deben soportar Hadoop para que se puedan ejecutar de una manera distribuida.

Big Data

Es un concepto muy ligado a la computación distribuida. El objetivo es el manejo de ingentes cantidades de datos. Las bases de datos tradicionales son capaces de manejar grandes cantidades de datos pero aun así tienen límites y cuellos de botella incluso funcionando en grandes ordenadores. En big data debemos pensar en ingentes cantidades de información como todas las transacciones de todos los bancos de un país o todas las acciones de todos los clientes de una gran empresa. No solo hablamos de ingentes cantidades si no también de una gran cantidad de actualizaciones diarias. Para soportar todo esto la computación distribuida es la única via. Aun así el concepto big data no solo incluye una base de datos funcionando sobre un entorno de computación distribuida. Son necesarios elementos adicionales:

  • ETF – “Extract Transform Load”, se encarga de recoger datos de distintas fuentes y transformarlos en un formato de fácil manejo dentro del entorno big data.
  • Data Correlation – Aunque la arquitectura big data es capaz de almacenar ingentes cantidades de información esta debe ser almacenada de una manera coherente. Esta capa procesa todos los datos relacionados con un evento y lo almacena como un registro único. Todos los datos relacionados al mismo evento o transacción deben ser almacenados en el mismo registro.
  • Base de datos – Normalmente suele ser una base de datos SQL pero compatible para funcionar en un entorno de computación distribuida. El entorno Hadoop incluye varias bases de datos para su funcionamiento distribuido.
  • Aplicaciones big data – Estas aplicaciones realizan consultas en la base de datos big data. No es necesario que estas aplicaciones soporten la computación distribuida ya que el mayor esfuerzo de computación está en los elementos anteriores. Las típicas aplicaciones de big data son el análisis de negocio, análisis de clientes y de su experiencia de usuario. Además podemos ver en las noticias como las haciendas de los países utilizan big data para detectar el fraude en los contribuyentes.

SaaS

“Software as a Service” o software vendido como un servicio. Tradicionalmente un programa se compra y, una vez instalado, lo podemos utilizar indefinidamente e incluso volverlo a instalar en un ordenador más potente cuando el anterior queda obsoleto. El precio suele ser alto ya que se compra el uso ilimitado de este programa. Cuando se vende un software como servicio estamos comprando el uso por un determinado periodo. Si pagamos mensualmente estamos comprando el derecho de uso por un mes. Esto permite que la cantidad a pagar sea bastante pequeña. Si estamos contentos con la aplicación no tendremos problema en seguir pagando, además suele estar incluido el soporte de la aplicación. En el momento en el que ya no sea útil podemos cancelar el uso y la aplicación dejaría de funcionar. Ejemplo de SaaS son los antivirus en los que se compra el derecho de uso por un periodo determinado que suele ser de un año. Si, al finalizar el periodo, no renovamos la licencia el antivirus deja de funcionar. El concepto es independiente de que el programa se instale en nuestro ordenador o se utilice a través de una página web.

Marketplace

Literalmente punto de venta. Es una tienda a la que se accede remotamente utilizando internet. La conexión a esta tienda se puede hacer mediante un navegador web (en este caso se denomina webstore) o mediante una aplicación instalada en nuestro ordenador o en nuestro dispositivo móvil. En esta tienda virtual podemos comprar desde programas hasta música, videos o libros.

VoIP

Abreviatura de “Voice over IP”. Es una aplicación que cada vez está más en alza. Esta aplicación permite comunicaciones telefónicas utilizando las mismas redes que utiliza nuestro ordenador. Para la red es como una comunicación más y la voz se transmite de la misma manera que una navegación web o la descarga de un video. Cada vez se utiliza más porque la voz necesita alrededor de 300 KBit/S lo cual es bastante poco para las redes modernas. En todas las aplicaciones de VoIP el usuario utiliza una aplicación cliente que se conecta a un servidor central que realiza la gestión de las comunicaciones. La primera aplicación y la más utilizada hoy en día es Skype. Es bastante fácil de manejar y utiliza un sistema propietario de Skype (Actualmente pertenece a Microsoft). La ventaja principal es que utiliza un protocolo similar a HTTP (El utilizado por los navegadores web) y, para la red, es como si fuera un navegador. Por lo tanto se puede en redes privadas que normalmente solo permiten la navegación web en internet. Siempre que se pueda utilizar una navegador se puede usar Skype. Para comunicaciones internas dentro de redes privadas se utilizan los sistemas basados en H.323.  H.323 es un sistema que ha sido muy utilizado y se sigue utilizando actualmente pero que está desapareciendo en beneficio de los sistemas basados en IMS. La evolución actualmente es hacia los sistemas basados en IMS que usa el protocolo SIP. Al ser un estándar permite la comunicación entre distintos operadores sin necesidad de ninguna adaptación. Por supuesto la red tradicional de telefonía no va a desaparecer por lo que son necesarias pasarelas o gateways que permiten que se pueda llamar a un teléfono tradicional desde un cliente de voz sobre IP

IMS

Abreviatura de “IP multimedia subsystem”. No es en si una aplicación si no la base para que otras aplicaciones funcionen. Las aplicaciones que lo utilizan son aplicaciones de comunicación como VoIP, Mensajería instantánea, comunicaciones video, etc. IMS es como un nodo de comunicaciones al que se conecta nuestra aplicación cliente. El nodo IMS comprueba nuestra identificación de usuario y mantiene un registro del estado de nuestra conexión. Por ejemplo, si queremos hacer una llamada de VoIP el nodo IMS se encarga de realizar las conexiones necesarias con el elemento que gestiona las comunicaciones de VoIP, con otro nodo IMS si el destinatario pertenece a un nodo IMS conocido o con la pasarela si el destinatario está en la rede de telefonía tradicional. Hoy en día mucho operadores tienen su nodo IMS conectado con los nodos IMS de otros operadores por lo que una llamada de VoIP no necesita pasar por ninguna pasarela. De cara al usuario un operador solo tiene un servidor IMS aunque, por seguridad y capacidad, este nodo puede estar compuesto de varios elementos incluso localizados en diferentes sitios. Para una aplicación las ventajas principales de ser diseñada para IMS son las siguientes:

  1. seguridad: El nodo IMS comprueba la identificación del usuario y está protegido frente a ataques
  2. estandarización: IMS es un estándar que permite la comunicación entre distintos operadores
  3. punto único de contacto: Sea cual sea la aplicación el usuario es el mismo y permite compartir elementos comunes como una libreta de direcciones o un servidor de presencia que informa del estado de otros usuarios.

Las comunicaciones con el servidor IMS se realizan utilizando el protocolo SIP (Session Initiation Protocol). El protocolo SIP es a las comunicaciones como el protocolo HTTP a la navegación web.

M2M

M2M o “Machine To Machine” es un area en el que se engloban aplicaciones que utilizan internet para la conexión entre máquinas autónomas con una mínima intervención humana. Pongamos un ejemplo de una aplicación M2M: Una empresa de máquinas expendedoras de bebidas, comida, cigarrillos, etc. Utiliza una aplicación M2M para comprobar en cada momento el stock de cada una de las máquinas. Un servidor central recibe regularmente a través de internet las existencias de cada máquina y avisa cuando un producto se ha acabado en una máquina o cuando hay un problema. Así el técnico solo tiene que ir cuando es necesario y no tiene que visitar las máquinas expendedoras innecesariamente. Existen hoy en día aplicaciones M2M para controlar ascensores, vehiculos, contadores eléctricos y se está pensando en elementos tan cotidianos como los electrodomésticos.

“Internet of the Things” o “Internet de las cosas”

Es un concepto que fué propuesto por primera vez por Kevin Ashton en 1.999. Se podría decir que es parecido o similar a M2M pero quizás es bastante más amplio. La idea es que todas las cosas (o la inmensa mayoría) tuvieran la capacidad de conectarse a internet e interaccionar con otras cosas, aplicaciones, ordenadores, etc. Si esto fuera así no habría cosas perdidas ya que se sabría donde están, sabríamos si algo se ha acabado, si algo tiene un problema, etc. Los fabricantes sabrían como usamos sus productos y eso les permitiría mejorarlos. Aunque es parecido al concepto M2M es mucho más ambicioso e imagina un futuro en el que todas las cosas tendría un chip y podremos interactuar con ellas a través de internet. Aun así no tenemos que esperar al futuro y ya tenemos aplicaciones IoT comerciales.

  1. Vending.- Estas aplicaciones conectan las máquinas expendedoras de bebidas, comida, tabaco, etc. De esta manera estas máquinas informan del inventario, problemas o falta de producto. Esto permite que las personas que se dedican al mantenimiento controlen perfectamente estas máquinas sin necesidad de desplazarse.
  2. Connected Car.- Actualmente solo los coches de gama alta lo tienen pero, en poco tiempo, todos los coches estarán conectados. Estas conexiones no se utilizarán para llamar si no que las utilizará el propio coche para informar al fabricante de problemas o de un accidente. Los fabricantes tienen una información valiosísima del uso que se les da a los coches, histórico de problemas, etc. En caso de accidente los servicios de emergencia son informados inmediatamente asistiendo a los accidentados en un tiempo muy breve.
  3. Smartgrid.- Consiste en la instalación de un medidor eléctrico inteligente en nuestra casa que envia nuestro consumo por hora y día. Esto permitirá aplicar una tarifa más económica en las horas de bajo consumo y más cara en horas de alto consumo. El beneficio es adaptar el consumo a la producción de electricidad. La energía eléctrica no se puede almacenar y, a las centrales eléctricas, les viene muy mal encenderse y apagarse para adaptarse a un consumo muy cambiante. Muchas centrales no se pueden apagar durante la noche cuando el consumo es muy reducido. Smartgrid permitirá a empresas y usuarios aprovechar esos momentos de mucha producción y bajo consumo para conseguir energía a un precio reducido.
  4. Home automation.- Automatizar nuestra casa nos permitirá encender y apagar la calefacción o aire acondicionado desde cualquier lugar para encontrarnos nuestra casa a una temperatura adecuada cuando lleguemos. También nos permitirá encender y apagar luces de la casa e incluso poder conectarnos desde nuestro teléfono móvil a una cámara en nuestra casa para comprobar que todo está bien. Todos estos equipos los podemos comprar actualmente a un precio muy económico.