La Arquitectura de Software
Desde el surgimiento de la informática, la programación se consideraba un arte por lo compleja y complicada que era para la mayoría de las personas. Pero poco a poco se comenzaron a desarrollar metodologías para conseguir propósitos y metas. Y a todas estas técnicas se le llamó Arquitectura de Software. Existen muchas definiciones y conceptos para la Arquitectura de Software, los principales de ellos dados por grandes estudiosos de la materia, por ejemplo una definición reconocida es la de Paul Clements: “La Arquitectura de Software es, a grandes rasgos, una vista del sistema que incluye los componentes principales del mismo, la conducta de esos componentes según se la percibe desde el resto del sistema y las formas en que los componentes interactúan y se coordinan para alcanzar la misión del sistema. La vista arquitectónica es una vista abstracta, aportando el más alto nivel de comprensión y la supresión o diferimiento del detalle inherente a la mayor parte de las abstracciones".
Otra definición que no deja de ser importante es la definición adoptada por la IEEE Std 1471-2000: “La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución”.
La Arquitectura de Software es también conocida como Arquitectura Lógica, consiste en un conjunto de patrones y abstracciones relacionados entre sí que brindan el marco de referencia necesario para orientar y dirigir la línea de construcción del software para un sistema de información.
Esta a la vez plantea los fundamentos para que analistas, diseñadores y otros roles trabajen conjuntamente en una misma línea permitiendo alcanzar los objetivos del sistema, garantizando todas las necesidades.
Una Arquitectura de Software se selecciona y diseña basada en objetivos y restricciones bien definidas. Hay arquitecturas que son más recomendables de implementar con ciertas tecnologías por las diferentes características de los distintos sistemas a desarrollar. La Arquitectura de Software define de manera abstracta los componentes que llevan a cabo algunas tareas, sus interfaces y la comunicación entre ellos.
En términos más concretos, la Arquitectura de Software abarca decisiones muy importantes sobre la organización del sistema de software, los elementos estructurales que componen el sistema y su interfaz, su comportamiento y el estilo que guía esta organización.
La Arquitectura de Software no ha tenido todavía una historia aceptable ya que desde los 90´s desde que Mary Shaw y David Garlan reseñaron escuetamente la especialidad, los párrafos han sido reutilizados una y otra vez sin realizar más investigaciones acerca del tema.
Desde la década de los 60´s ya se hablaba de la terminología Arquitectura de Software en los círculos de investigación como fue el ejemplo de Edsger Dijkstra, David Parnas y de Fred Brooks. Desde ese entonces se planteaba que debía existir una estructuración de los sistemas de software antes de comenzar a programar. Siguiendo pasos formales para descomponer problemas más complicados y organizarlos en capas. Para 1970 aparecen el diseño estructurado y conjuntamente con ello los primeros modelos explícitos de desarrollo de software. Surgieron entonces las primeras investigaciones académicas sobre diseño de sistemas complejos, independizándose el diseño de la implementación. Pero la verdadera época de la Arquitectura de Software se dice que fue a partir de 1990, período conocido como la “crisis del software”. En este tiempo fue que surgieron los patrones, realizando trabajos más cerca de la implementación y el código, aunque la reutilización de patrones guarda estrecha relación con el diseño orientado a objetos. Tanto en los patrones como en la arquitectura la idea dominante es la reutilización. En esta década es que la AS alcanza su madurez como concepto, se desarrolla la tipificación de los estilos arquitectónicos y se elaboran lenguajes de descripción de arquitectura (ADLs). También se consolidó la concepción de las vistas o modelos reconocidos en los framework.
En el siglo XXI, la Arquitectura de Software aparece determinada por estrategias orientadas a líneas de productos y por establecer disimiles formas de análisis, diseño, refinamiento, recuperación, diseños basados en escenarios y estudios de casos; redefiniendo todas las metodologías ligadas al ciclo de vida en términos arquitectónicos.
Pero lo mas importante en la Arquitectura de Software son los estilos arquitectónicos que han sido creados por los grandes de la ingeniería.
Otra definición que no deja de ser importante es la definición adoptada por la IEEE Std 1471-2000: “La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución”.
La Arquitectura de Software es también conocida como Arquitectura Lógica, consiste en un conjunto de patrones y abstracciones relacionados entre sí que brindan el marco de referencia necesario para orientar y dirigir la línea de construcción del software para un sistema de información.
Esta a la vez plantea los fundamentos para que analistas, diseñadores y otros roles trabajen conjuntamente en una misma línea permitiendo alcanzar los objetivos del sistema, garantizando todas las necesidades.
Una Arquitectura de Software se selecciona y diseña basada en objetivos y restricciones bien definidas. Hay arquitecturas que son más recomendables de implementar con ciertas tecnologías por las diferentes características de los distintos sistemas a desarrollar. La Arquitectura de Software define de manera abstracta los componentes que llevan a cabo algunas tareas, sus interfaces y la comunicación entre ellos.
En términos más concretos, la Arquitectura de Software abarca decisiones muy importantes sobre la organización del sistema de software, los elementos estructurales que componen el sistema y su interfaz, su comportamiento y el estilo que guía esta organización.
La Arquitectura de Software no ha tenido todavía una historia aceptable ya que desde los 90´s desde que Mary Shaw y David Garlan reseñaron escuetamente la especialidad, los párrafos han sido reutilizados una y otra vez sin realizar más investigaciones acerca del tema.
Desde la década de los 60´s ya se hablaba de la terminología Arquitectura de Software en los círculos de investigación como fue el ejemplo de Edsger Dijkstra, David Parnas y de Fred Brooks. Desde ese entonces se planteaba que debía existir una estructuración de los sistemas de software antes de comenzar a programar. Siguiendo pasos formales para descomponer problemas más complicados y organizarlos en capas. Para 1970 aparecen el diseño estructurado y conjuntamente con ello los primeros modelos explícitos de desarrollo de software. Surgieron entonces las primeras investigaciones académicas sobre diseño de sistemas complejos, independizándose el diseño de la implementación. Pero la verdadera época de la Arquitectura de Software se dice que fue a partir de 1990, período conocido como la “crisis del software”. En este tiempo fue que surgieron los patrones, realizando trabajos más cerca de la implementación y el código, aunque la reutilización de patrones guarda estrecha relación con el diseño orientado a objetos. Tanto en los patrones como en la arquitectura la idea dominante es la reutilización. En esta década es que la AS alcanza su madurez como concepto, se desarrolla la tipificación de los estilos arquitectónicos y se elaboran lenguajes de descripción de arquitectura (ADLs). También se consolidó la concepción de las vistas o modelos reconocidos en los framework.
En el siglo XXI, la Arquitectura de Software aparece determinada por estrategias orientadas a líneas de productos y por establecer disimiles formas de análisis, diseño, refinamiento, recuperación, diseños basados en escenarios y estudios de casos; redefiniendo todas las metodologías ligadas al ciclo de vida en términos arquitectónicos.
Pero lo mas importante en la Arquitectura de Software son los estilos arquitectónicos que han sido creados por los grandes de la ingeniería.