¿Qué es la arquitectura del software?

La arquitectura del software es una disciplina muy relevante en la actualidad, y a la que no siempre se le otorga la debida importancia. En este artículo trataremos de resumir el concepto, su importancia y algunas de sus principales bases.

En el mundo del desarrollo nos enfrentamos a sistemas complejos. Si bien es cierto que no todo el software tiene por qué ser realmente complejo, es necesario establecer unas bases sólidas para facilitar su mantenimiento y su crecimiento en el futuro.

El mantenimiento es esencial, porque aunque un software se pueda desarrollar en unas pocas semanas o meses, lo más probable es que se mantenga durante años, añadiendo nuevas funcionalidades requeridas, o corrigiendo problemas existentes. El crecimiento también es fundamental, porque todo software cuya funcionalidad no se amplíe o se modifique, tiende a ser inservible en un relativamente corto espacio de tiempo.

A medida que el software comienza a crecer y a hacerse más complejo, es importante que tenga una forma bien definida, de modo que seamos capaces de entenderlo como un todo. De no ser así, al examinar cada una de sus partes por separado, lo más normal es que seamos incapaces de interpretar correctamente el funcionamiento y el motivo de su existencia.

La arquitectura del software por tanto define la estructura que debe de tener un software, las piezas que debemos construir y el modo en el que se deben de juntar y trabajar entre ellas. Se define a alto nivel mediante una serie de patrones y abstracciones que seguir para el desarrollo del software y para la interacción entre sus diversas piezas.

Piezas del software

Cuando hablamos de las piezas del software, un primer paso es fijarse en el dominio del problema que se desea resolver. Gracias a ello podremos establecer una jerarquía de clases objetos que responden a las características del mundo real. Por ejemplo en un juego de mesa podríamos tener jugadores, tablero, fichas, etc. Sin embargo, esa primera aproximación no es realmente una arquitectura y tampoco es capaz de establecer una estructura con las características deseables para un sistema, capaz de ser suficientemente complejo sin convertirse en un caos. El siguiente paso será dividir el código en función de la tarea que deben realizar. Es así como llegamos a los modelos y vistas.

Modelos: Se encargan de trabajar con los datos.

Vistas: Se encargan de la parte de la presentación, es decir, mostrar los datos al usuario y, en ocasiones, de gestionar la interacción.

Estas fueron las piezas definidas en el primer estilo arquitectónico, base de una de las arquitecturas del software más comunes, denominadas MV*. Posteriormente emergió una nueva pieza que viene a completar muchas de las variantes de este MV*.

Controladores: Se encargan de coordinar el trabajo entre modelos y vistas, manteniendo la lógica de las aplicaciones.

Conclusión

En resumen, la arquitectura del software es una disciplina que merece la pena estudiar en profundidad, necesaria para la creación de software con éxito. Cualquier programador profesional debería estudiar las arquitecturas y los estilos arquitectónicos más comunes y, por supuesto, tenerlos en cuenta al desarrollar las aplicaciones.