Tendencias del software

Cuanto más sencillo, mejor....

   

Durante décadas el software ha ido siendo cada vez más complejo. Actualmente observamos una predisposición hacía el minimalismo, a eliminar lo superfluo, resaltar lo importante y ocultar lo obvio. Al igual que la filosofía del “lean manufacturing” supuso una revolución en la manera de organizar la producción industrial, aplicaciones tan exitosas y sencillas como Facebook o Twitter, están revolucionando la manera en la que entendemos el software.

Cuando hablamos de la sencillez de un producto, existen tres dimensiones que debemos  tener en cuenta: funcionamiento, facilidad de uso y accesibilidad. Cualquiera de estos aspectos es crucial a la hora de evaluar la calidad de un software.

Por buen funcionamiento de un producto, entendemos su capacidad para ofrecernos un beneficio esperado.  Un libro en blanco y un programa de contabilidad permiten llevar la contabilidad de un negocio, la metodología por supuesto es muy distinta. Mientras que el procedimiento manual exige un gran esfuerzo y conocimientos por parte del individuo, la vía electrónica nos permite automatizar las tareas más tediosas, disminuir los errores por falta de atención o concentración además de evitarnos los cálculos más complejos.  Un software, al igual que cualquier producto, funciona mejor cuanto menos esfuerzo exige al usuario para poder realizar una determinada tarea.

Existen dos maneras no necesariamente contrapuestas de lograr este objetivo, vía potencia o vía optimización del diseño. La primera implicar asignar más recursos a la tarea en cuestión y está directamente relacionada con la capacidad de cálculo del sistema o potencia del hardware. La idea es que cuantas más operaciones por segundo se puedan realizar, más rápido se realizarán las tareas.

La segunda vía implica poner especial atención al diseño de la aplicación para que sea capaz de ofrecer resultados concretos consumiendo la menor cantidad posible de recursos y en el menor número de pasos. Se trata de dotar a la solución del mayor nivel de eficiencia posible, simplificando al máximo su diseño, lo que además de mejorar la capacidad de ejecución ofrece otras muchas ventajas.

Las cosas complejas fallan con mucha más facilidad y es más difícil localizar y solucionar los problemas. Por tanto las soluciones sencillas tienen un mantenimiento menos costoso. Una de las tendencias más importantes dentro del diseño de software es la Arquitectura Orientada a servicios o SOA (Service Oriented Architecture) que permiten un mayor grado interoperabilidad entre sistemas complejos. Mediante la disposición del software en capas se consigue un soporte tecnológico común para diferentes aplicaciones que pueden ofrecer funcionalidades muy diversas y que a la vez permite que estas interactúen de manera sencilla.

Con esto se consigue que simplificar la implementación de modificaciones, al afectar únicamente a partes  aisladas de del sistema. De la misma manera cuando se quiere mejorar  la capa tecnológica del sistema, no es necesario realizar cambios en las aplicaciones. Este tipo de planteamiento sin duda supone un hito, en las aplicaciones orientadas a empresa, ya que la evolución del software se convierte en un proceso continuo.  Lejos de  tener que realizar costoso procesos de migración cada muchos años, la solución puede ir evolucionando de manera constante, sin perder competitividad.

También este tipo de arquitectura facilita la integración de nuestros sistemas con los de terceros, como pueden clientes, proveedores o administraciones. Este tipo de colaboración sin duda es una de las tendencias más fuertes del mercado y los retornos que se obtienen frente a unas cifras de inversión relativamente modestas, justifican de sobra la adopción de este tipo de prácticas. A fin de cuentas, nos permite interactuar con nuestra cadena de valor de una manera simple y barata.

En resumen, la gestión de una empresa es de por si un asunto bastante complejo, y la misión de cualquier software tiene que ser simplificar. Cualquier complicación que este añada será a costa de lograr su objetivo.