
2 minute read
Definición de Arquitectura de Software
Definición de Arquitectura de Software
En los inicios de la informática, la programación se consideraba un arte y se desarrollaba como tal debido a la dificultad que entrañaba para la mayoría de las personas, pero con el tiempo se han ido descubriendo y desarrollando formas y guías generales, con base a las cuales se puedan resolver los problemas. A estas, se les ha denominado arquitectura de software, porque, a semejanza de los planos de un edificio o construcción, estas indican la estructura, funcionamiento e interacción entre las partes del software.
Advertisement
La arquitectura de software es un conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, permitiendo a los programadores, analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto que establecen la estructura, funcionamiento e interacción entre las partes del software.
Se trata de una serie de decisiones basadas en una amplia gama de factores, y cada una de estas decisiones pueden tener un impacto considerable en la calidad, rendimiento, facilidad de mantenimiento, y en general el éxito de la aplicación.
Es conveniente definir el concepto ya que a lo largo del tiempo distintos autores y organizaciones han dado su definición de arquitectura del software y no existe una acepción general del término. De acuerdo al Software Engineering Institute (SEI), la Arquitectura de Software se refiere a “las estructuras de un sistema, compuestas de elementos con propiedades visibles de forma externa y las relaciones que existen entre ellos.
En el libro "An introduction to Software Architecture", David Garlan y Mary Shaw definen que la arquitectura es un nivel de diseño que hace foco en aspectos "más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema".
Philippe Kruchten, Grady Booch, Kurt Bittner, y Rich Reitman derivan y refin una definición de la arquitectura basada en el trabajo de Mary Shaw y David Garlan (Shaw y Garlan 1996). Su definición es: "La arquitectura de software abarca el conjunto de decisiones importantes sobre la organización de un sistema de software que incluye la selección de la estructura, los elementos y sus interfaces por el cual el sistema está compuesto; comportamiento especificado en la colaboración entre dichos elementos, composición de la estructuray elementos de comportamiento en subsistemas más grandes, y un estilo arquitectónico que guía esta organización.”
En Arquitectura de Software en la práctica (2nd edición), Bass, Clements y Kazman definen la arquitectura de la siguiente manera: "La arquitectura de software de un sistema o programa de computación es la estructura o estructuras del sistema, que comprenden elementos de software, lo visible externamente, propiedades de esos elementos y las relaciones entre ellos.
En las diferentes definiciones el termino estructura se utiliza para designar el “conjunto coherente de elementos arquitectónicos y sus relaciones” en sí y no la documentación de ese conjunto. Cuando hablamos de estructura, hablamos de elementos de software tal y como están en el sistema, en el código o en ejecución. Claramente, la arquitectura del sistema es el conjunto de estructuras, que no necesariamente coincide con la documentación que supuestamente le corresponden.