Está en la página 1de 8

El proceso del desarrollo de sistemas de software ha ido en aumento en los últimos años, demandando la construcción de grandes y complejos sistemas

que requieren la combinación de diferentes tecnologías y plataformas de hardware y software para alcanzar la funcionalidad requerida. El diseño e implementación ha pasado de una concepción monolítica y uniforme a una visión heterogénea y distribuida. El proceso de desarrollo se ha ido convirtiendo poco a poco en una labor de ingeniería, poniendo de manifiesto la relevancia de un estudio específico de la estructura del software. Actualmente la elaboración de especificaciones, el diseño del sistema, construcción de prototipos, integración y pruebas, forman parte de la Ingeniería del Software respondiendo a la creación de nuevos modelos, notaciones, técnicas y métodos. Dentro de esta orientación se enmarca el creciente interés al estudio, análisis y descripción de la estructura del software dando lugar a aspectos arquitectónicos del mismo. Estos aspectos se refieren a todo lo relativo a la estructura de alto nivel de los sistemas: su organización en subsistemas y la relación entre ellos; la construcción de aplicaciones con reutilización de otras existentes y desarrollo de productos que presentan una arquitectura común. En consecuencia, el modelado de una arquitectura a nivel conceptual permite al diseñador decidir cuestiones que tendrán influencia a lo largo de todo el ciclo de vida de la aplicación. Para diseñar una arquitectura de software podemos partir con patrones de soluciones ya probados que han funcionado. El objetivo que se persigue con el uso de los patrones dentro del mundo del desarrollo de software es establecer un catálogo de referencia para ayudar a los ingenieros de software a solucionar problemas de ingeniería de software dando lugar a un lenguaje común con el cual comunicar la experiencia entorno a dichos problemas y a su solución. Hoy en día las organizaciones hacen uso de sistemas de software complejos, de gran

limitaciones económicas y tecnológicas. pues. Esto exige a los desarrolladores de software diseñar muy cuidadosamente la arquitectura bajo la cual funcionan sus sistemas. la arquitectura brinda una visión global del sistema. La vista arquitectónica es una vista abstracta. reutilización. las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución”. Otra definición reconocida es la aportada por Clements: “La Arquitectura de Software es. 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 el objetivo del sistema. A su vez el documento de IEEE Std 1471-2000 define: “La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes. Según David Garlan la Arquitectura de Software establece un puente entre el requerimiento y el código. usabilidad. una vista del sistema que incluye los componentes principales del mismo. Esto permite entenderlo. plantear la reutilización del software y hacerlo evolucionar. organizar su desarrollo. Si bien no hay una definición oficial de Arquitectura de Software. aportando el más alto nivel de compresión y la supresión o diferimiento del detalle inherente a la mayor parte de las abstracciones”. Es decir. La arquitectura se encuentra en un nivel de abstracción por encima del diseño de software que se concentra en el modelado de abstracciones de más bajo nivel.tamaño y combinando distintas tecnologías y plataformas de hardware. podemos decir que abarca todo lo relativo a la estructura de alto nivel de los sistemas: su organización en subsistemas y la relación entre ellos. es una forma de diseño de software que se manifiesta tempranamente en el proceso de creación de un sistema. a grandes rasgos. Las . Se puede ver que la noción clave de la arquitectura es la organización y está relacionada con aspectos de rendimiento. La arquitectura de software también se relaciona con el diseño. ya que las decisiones que se tomen tendrán gran influencia a lo largo de todo el ciclo de vida de la aplicación.

Existe cierta aceptación en el uso de UML (Unified Modeling Language. Cada paradigma de desarrollo exige vistas. La arquitectura es algo más integrado que la suma del análisis por un lado y el diseño por el otro. . Ésta se ocupa de componentes y no de procedimientos. ya que todas las vistas deben ser coherentes entre sí. etc. los procedimientos y los tipos. hay por lo menos tres que son esenciales en cualquier arquitectura: .La visión estática: describe cuáles son los componentes de la arquitectura. distribuyéndose así a través de los elementos arquitectónicos de más bajo nivel. Por lo general. los diagramas de flujo de datos. de las interacciones entre esos componentes y no de las interfaces. Se debe destacar que cada uno de ellos establece una descripción parcial de la misma arquitectura y es deseable que exista cierto solapamiento entre ellos. resultando en la transformación de la arquitectura en diseño.La visión dinámica: describe cómo se comportan los componentes a lo largo del tiempo y como interactúan entre sí. mientras que las del diseño conciernen a interacciones de tipo procedural. Las vistas de una arquitectura pueden formularse por medio de uno o varios lenguajes. sus puntos de conexión pierden grado de abstracción.La visión funcional: describe qué hace cada componente. cada uno de estos aspectos se describe en forma más comprensible si se utilizan diversos modelos o vistas. lenguaje unificado de modelado) como único lenguaje . A medida que la arquitectura de alto nivel se refina. . La Arquitectura de Software debe representar distintos aspectos del software.. El más obvio es el lenguaje natural. de las cuales. pero también existen otros como los diagramas de estado. de las restricciones a ejercer sobre los componentes y las interacciones y no de los algoritmos. dado que están describiendo la misma cosa.interacciones entre componentes en la arquitectura están en relación con un protocolo de alto nivel.

La descripción del diseño arquitectónico debería ocuparse de cómo consigue la arquitectura del diseño los requisitos de rendimiento. seguridad.para todos los modelos o vistas. Según Sahw y Garlan existen un conjunto de propiedades que se deben especificar como parte del diseño arquitectónico: . adaptabilidad y otras características del sistema. El diseño arquitectónico debería tener la capacidad de utilizar bloques de construcción arquitectónica reutilizados. . fiabilidad. aunque pueden ser aplicados en cualquier ámbito de la informática y las ciencias en general. El arquitecto Christopher Alexander define el término patrón de la siguiente manera: Arquitectura de Software: Estilos y Patrones Adriana Almeira – Vanina Perez Cavenago .Familias de sistemas relacionados. el diseño arquitectónico puede representarse usando uno o más modelos diferentes. .Propiedades extra-funcionales. Los modelos estructurales representan la arquitectura como una colección organizada de componentes de programa. Los modelos estructurales aumentan el nivel de abstracción de diseño intentando identificar estructuras de diseño arquitectónico repetibles (patrones) que se pueden encontrar en tipos similares de aplicaciones.Propiedades estructurales. ¿Qué son los patrones? Los patrones son una disciplina de resolución de problemas en la ingeniería del software que ha surgido con mayor énfasis en la comunidad de orientación a objetos. Este aspecto de la representación del diseño arquitectónico define los componentes de un sistema y la forma en que se empaquetan e interactúan unos con otros. Según la especificación de estas propiedades. capacidad.

” Las técnicas generales para la arquitectura de software no apuntan a la solución de problemas específicos. y ayudan a promover las buenas prácticas de diseño. también puede aplicarse al software.” Si bien Christopher Alexander aplicó los patrones originalmente a la construcción. un patrón es una instrucción que muestra como puede ser usada esta configuración espacial una y otra vez para resolver el sistema de fuerzas. Cada patrón aborda un problema específico y recurrente en el diseño o implementación de un software. cada patrón es una relación entre un contexto. La creación de arquitecturas específicas sigue basada en la intuición y experiencia. Estilos Arquitectónicos Un estilo arquitectónico es una lista de tipos de componentes que describen los . un problema y una solución. Esto nos lleva a citar una frase del libro “Pattern Oriented Software Architecture. Como elemento de un lenguaje. Estos capturan la experiencia existente y que ha demostrado ser exitosa en el desarrollo de software. Varios de los métodos existentes de análisis y diseño fallan a este nivel. ya que solamente proveen técnicas generales para construir software. Volumen 1” [Buschmann+96]: “Los patrones ayudan a construir sobre la experiencia colectiva de ingenieros de software experimentados. Como un elemento en el mundo. adoptando estructuras estáticas y dinámicas de soluciones exitosas en la solución de nuevos problemas. su concepto dominante es la reutilización.Pag 4“Cada patrón es una regla de 3 partes. Los patrones son bloques de construcción mental útiles para proceder con aspectos de diseño limitados y específicos en el momento del desarrollo de un sistema de software. siempre que el contexto lo haga relevante. que expresa una relación entre un contexto. un sistema de fuerzas que ocurren repetidamente en ese contexto y una configuración espacial que permite que esas fuerzas se resuelvan entre sí. Los patrones de software permiten que se reutilice tanto el diseño como la arquitectura.

Como ejemplo están los intérpretes. Un estilo afecta a toda la arquitectura de software y puede combinarse en la propuesta de solución. entre los que podemos destacar: . . Son estilos que se utilizan para sistemas en gran escala. No tiene sentido hablar de estilos si no se clarifica cuál es la tipología total en la que cada uno de ellos engrana. la distingue. problemas. herramientas. Una vez que se han identificado los estilos. La cuestión no es clasificarlas sino que al optar por una forma arquitectónica se define una situación pragmática. la investigación académica y la arquitectura en el nivel de abstracción más elevado.Estilos de Flujo de Datos: Esta familia de estilos destaca la reutilización y la modificabilidad. la singulariza. experiencias y antecedentes específicos. Es apropiada para sistemas que implementan transformaciones de datos en pasos sucesivos.Estilos de Llamada y Retorno: Pone mayor atención sobre la modificabilidad y la escalabilidad del sistema. . tácitamente se está haciendo referencia a una clasificación de las posibles configuraciones disponibles. . Los estilos ayudan a un tratamiento estructural que concierne más bien a la teoría. Una vez que los estilos adquieren una dimensión semántica precisa y diferencial. es lógico y natural pensar en reutilizarlos en situaciones semejantes que se presenten en el futuro. o una arquitectura cliente-servidor. expresando la arquitectura en un sentido más formal y teórico. . Son útiles para sistemas que se centran en el acceso y actualización de datos. orientada a servicios ciertamente la tipifica.patrones o las interacciones a través de ellos. Definir una arquitectura como.Estilos de Código Móvil: Su mayor interés está en la portabilidad. en cuyo contexto adquiere un significado distintivo.Estilos Centrados en Datos: Pone énfasis en la integridad de los datos. a su significado se asocian conceptos. Existe una clasificación de familias de estilos. Cuando se habla de una arquitectura en tres capas. por ejemplo.

El esquema de solución se especifica mediante la descripción de los componentes que la constituyen. experiencia comprobada en el desarrollo del software y ayudan a promover buenas prácticas de diseño. Describe la estructura comúnmente recurrente de los componentes en comunicación. Así mismo. que resuelve un problema general de diseño en un contexto particular. Un patrón. o las relaciones entre ellos.Arquitectura de Software: Estilos y Patrones Adriana Almeira – Vanina Perez Cavenago Pag 6Estilo Vs Patrones Los estilos expresan componentes y las relaciones entre éstos. Por otra parte. resultado de la experiencia en el diseño de arquitecturas de sistemas y propone los patrones arquitectónicos como descripción de un problema particular y recurrente de diseño. Cada patrón es específico a un problema recurrente en el diseño e implementación de un sistema de software. y presenta un esquema genérico demostrado con éxito para su solución. pero sí sobre la de un subsistema. así como también las reglas para su construcción. como ya se ha comentado. así como también la forma como éstos colaboran entre sí. Por último. . junto con un método asociado que especifica cómo construirlo. que aparece en contextos de diseño específico. Su aplicación no tiene efectos en la estructura fundamental del sistema. un patrón de diseño provee un esquema para refinar los subsistemas o componentes de un sistema de software. con las restricciones de su aplicación y la composición asociada. se considera un par problema – solución. se considera como un tipo particular de estructura fundamental para un sistema de software. sus responsabilidades y desarrollos. los patrones arquitectónicos capturan existencia.

.debido a que especifica en mayor nivel de detalle. Se puede afirmar que una combinación adecuada de ellos permite alcanzar los requerimientos de calidad esperados. el comportamiento de los componentes del subsistema. Los estilos y patrones ayudan al arquitecto a definir la composición y el comportamiento del sistema de software. sin llegar a la implementación.