Arquitectura de software

Se refiere a una planificación basada en modelos, patrones y abstracciones teóricas, a la hora de realizar una pieza de software de cierta complejidad y como paso previo a cualquier implementación. De esta forma se dispone de una guía teórica detallada que nos permite entender cómo van a encajar cada una de las piezas de nuestro producto o servicio.

La arquitectura del software es una fase de planificación crítica a la hora de comenzar cualquier proyecto para cualquier pieza de software, ya que nos proporciona una hoja de ruta clara sobre el camino a seguir en el desarrollo, dándonos instrucciones sobre qué componentes formarán parte de nuestro producto, cómo se distribuirán y cuál será la forma en la que se comuniquen entre sí.

Patrones de arquitectura de software

cliente-servidor

Muy usado sobre todo en el diseño de webs y servicios online, y se basa en el concepto de la existencia de un servidor (que proporciona el servicio) y una serie de clientes, que piden al servidor y reciben una respuesta del mismo.

De capas

se subdivide la estructura del programa en un número de capas que representan una subtarea, cada una perteneciendo a un nivel de abstracción diferente. Cada capa está diseñada para proporcionar un servicio a la siguiente capa de mayor nivel. Generalmente se utilizan las siguientes capas:

modelo-vista-controlador (MVC)

Modelo: Contiene la funcionalidad central y los datos.

Vista: Muestra la información al usuario, siempre es posible definir una o más vistas para una misma aplicación.

Controlador: Maneja la entrada del usuario. Esto se hace para separar las representaciones internas de la información de las formas en que se presenta y se acepta la información del usuario. De esta manera se desacopla los componentes y permite una reutilización eficiente del código.

master-slave

consiste en dos grupos, el primero es llamado el maestro (master) y el otro el grupo de esclavos (slaves). Los esclavos realizan la tarea propuesta por el maestro, computan los resultados y los envían de nuevo a este, quien los presenta, almacena o procesa.

Importancia

A la hora de elegir un patrón de arquitectura siempre es necesario pensar en una serie de cuestiones que determinan el uso final que vamos a darle a nuestro software:

Coste - ¿Cuánto estamos dispuestos a invertir en el desarrollo y mantenimiento de nuestro sistema?

Tiempo de desarrollo - Igualmente, y muy relacionado con lo anterior, debemos de preguntarnos cuanto tiempo disponemos para desarrollar el producto, y cómo de cerca se encontraría la fecha de entrega o de salida al mercado.

Número de usuarios - Qué tipo de producto es y cuantos usuarios soporta ¿Funciona a través de web? ¿Es stand-alone? ¿Debe de soportar cargas elevadas por diseño?

Nivel de aislamiento - tener en cuenta es si el producto funciona de forma aislada al resto de productos del usuario o si debe de integrarse o permitir integraciones de terceros.