You are on page 1of 8

El proceso del desarrollo de sistemas de software ha ido en aumento en los ltimos aos, demandando la construccin de grandes y complejos sistemas

que requieren la combinacin de diferentes tecnologas y plataformas de hardware y software para alcanzar la funcionalidad requerida. El diseo e implementacin ha pasado de una concepcin monoltica y uniforme a una visin heterognea y distribuida. El proceso de desarrollo se ha ido convirtiendo poco a poco en una labor de ingeniera, poniendo de manifiesto la relevancia de un estudio especfico de la estructura del software. Actualmente la elaboracin de especificaciones, el diseo del sistema, construccin de prototipos, integracin y pruebas, forman parte de la Ingeniera del Software respondiendo a la creacin de nuevos modelos, notaciones, tcnicas y mtodos. Dentro de esta orientacin se enmarca el creciente inters al estudio, anlisis y descripcin de la estructura del software dando lugar a aspectos arquitectnicos del mismo. Estos aspectos se refieren a todo lo relativo a la estructura de alto nivel de los sistemas: su organizacin en subsistemas y la relacin entre ellos; la construccin de aplicaciones con reutilizacin de otras existentes y desarrollo de productos que presentan una arquitectura comn. En consecuencia, el modelado de una arquitectura a nivel conceptual permite al diseador decidir cuestiones que tendrn influencia a lo largo de todo el ciclo de vida de la aplicacin. Para disear 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 catlogo de referencia para ayudar a los ingenieros de software a solucionar problemas de ingeniera de software dando lugar a un lenguaje comn con el cual comunicar la experiencia entorno a dichos problemas y a su solucin. Hoy en da las organizaciones hacen uso de sistemas de software complejos, de gran

tamao y combinando distintas tecnologas y plataformas de hardware. Esto exige a los desarrolladores de software disear muy cuidadosamente la arquitectura bajo la cual funcionan sus sistemas, ya que las decisiones que se tomen tendrn gran influencia a lo largo de todo el ciclo de vida de la aplicacin. Si bien no hay una definicin oficial de Arquitectura de Software, podemos decir que abarca todo lo relativo a la estructura de alto nivel de los sistemas: su organizacin en subsistemas y la relacin entre ellos. Segn David Garlan la Arquitectura de Software establece un puente entre el requerimiento y el cdigo. A su vez el documento de IEEE Std 1471-2000 define: La Arquitectura de Software es la organizacin fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseo y evolucin. Otra definicin reconocida es la aportada por 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 segn se la percibe desde el resto del sistema y las formas en que los componentes interactan y se coordinan para alcanzar el objetivo del sistema. La vista arquitectnica es una vista abstracta, aportando el ms alto nivel de compresin y la supresin o diferimiento del detalle inherente a la mayor parte de las abstracciones. Es decir, la arquitectura brinda una visin global del sistema. Esto permite entenderlo, organizar su desarrollo, plantear la reutilizacin del software y hacerlo evolucionar. Se puede ver que la nocin clave de la arquitectura es la organizacin y est relacionada con aspectos de rendimiento, usabilidad, reutilizacin, limitaciones econmicas y tecnolgicas. La arquitectura de software tambin se relaciona con el diseo, pues, es una forma de diseo de software que se manifiesta tempranamente en el proceso de creacin de un sistema. La arquitectura se encuentra en un nivel de abstraccin por encima del diseo de software que se concentra en el modelado de abstracciones de ms bajo nivel. Las

interacciones entre componentes en la arquitectura estn en relacin con un protocolo de alto nivel, mientras que las del diseo conciernen a interacciones de tipo procedural. A medida que la arquitectura de alto nivel se refina, sus puntos de conexin pierden grado de abstraccin, distribuyndose as a travs de los elementos arquitectnicos de ms bajo nivel, resultando en la transformacin de la arquitectura en diseo. La arquitectura es algo ms integrado que la suma del anlisis por un lado y el diseo por el otro. sta se ocupa de componentes y no de procedimientos; de las interacciones entre esos componentes y no de las interfaces; de las restricciones a ejercer sobre los componentes y las interacciones y no de los algoritmos, los procedimientos y los tipos.

La Arquitectura de Software debe representar distintos aspectos del software. Por lo general, cada uno de estos aspectos se describe en forma ms comprensible si se utilizan diversos modelos o vistas. Se debe destacar que cada uno de ellos establece una descripcin parcial de la misma arquitectura y es deseable que exista cierto solapamiento entre ellos, ya que todas las vistas deben ser coherentes entre s, dado que estn describiendo la misma cosa. Cada paradigma de desarrollo exige vistas, de las cuales, hay por lo menos tres que son esenciales en cualquier arquitectura: - La visin esttica: describe cules son los componentes de la arquitectura. - La visin funcional: describe qu hace cada componente. - La visin dinmica: describe cmo se comportan los componentes a lo largo del tiempo y como interactan entre s. Las vistas de una arquitectura pueden formularse por medio de uno o varios lenguajes. El ms obvio es el lenguaje natural, pero tambin existen otros como los diagramas de estado, los diagramas de flujo de datos, etc.. Existe cierta aceptacin en el uso de UML (Unified Modeling Language, lenguaje unificado de modelado) como nico lenguaje

para todos los modelos o vistas. Segn Sahw y Garlan existen un conjunto de propiedades que se deben especificar como parte del diseo arquitectnico: - Propiedades estructurales. Este aspecto de la representacin del diseo arquitectnico define los componentes de un sistema y la forma en que se empaquetan e interactan unos con otros. - Propiedades extra-funcionales. La descripcin del diseo arquitectnico debera ocuparse de cmo consigue la arquitectura del diseo los requisitos de rendimiento, capacidad, fiabilidad, seguridad, adaptabilidad y otras caractersticas del sistema. - Familias de sistemas relacionados. El diseo arquitectnico debera tener la capacidad de utilizar bloques de construccin arquitectnica reutilizados. Segn la especificacin de estas propiedades, el diseo arquitectnico puede representarse usando uno o ms modelos diferentes. Los modelos estructurales representan la arquitectura como una coleccin organizada de componentes de programa. Los modelos estructurales aumentan el nivel de abstraccin de diseo intentando identificar estructuras de diseo arquitectnico repetibles (patrones) que se pueden encontrar en tipos similares de aplicaciones. Qu son los patrones? Los patrones son una disciplina de resolucin de problemas en la ingeniera del software que ha surgido con mayor nfasis en la comunidad de orientacin a objetos, aunque pueden ser aplicados en cualquier mbito de la informtica y las ciencias en general. El arquitecto Christopher Alexander define el trmino patrn de la siguiente manera:

Arquitectura de Software: Estilos y Patrones Adriana Almeira Vanina Perez Cavenago

Pag 4Cada patrn es una regla de 3 partes, que expresa una relacin entre un contexto, un problema y una solucin. Como un elemento en el mundo, cada patrn es una relacin entre un contexto, un sistema de fuerzas que ocurren repetidamente en ese contexto y una configuracin espacial que permite que esas fuerzas se resuelvan entre s. Como elemento de un lenguaje, un patrn es una instruccin que muestra como puede ser usada esta configuracin espacial una y otra vez para resolver el sistema de fuerzas, siempre que el contexto lo haga relevante. Si bien Christopher Alexander aplic los patrones originalmente a la construccin, tambin puede aplicarse al software. Los patrones de software permiten que se reutilice tanto el diseo como la arquitectura, adoptando estructuras estticas y dinmicas de soluciones exitosas en la solucin de nuevos problemas. Esto nos lleva a citar una frase del libro Pattern Oriented Software Architecture, Volumen 1 [Buschmann+96]: Los patrones ayudan a construir sobre la experiencia colectiva de ingenieros de software experimentados. Estos capturan la experiencia existente y que ha demostrado ser exitosa en el desarrollo de software, y ayudan a promover las buenas prcticas de diseo. Cada patrn aborda un problema especfico y recurrente en el diseo o implementacin de un software. Las tcnicas generales para la arquitectura de software no apuntan a la solucin de problemas especficos. Varios de los mtodos existentes de anlisis y diseo fallan a este nivel, ya que solamente proveen tcnicas generales para construir software. La creacin de arquitecturas especficas sigue basada en la intuicin y experiencia. Los patrones son bloques de construccin mental tiles para proceder con aspectos de diseo limitados y especficos en el momento del desarrollo de un sistema de software, su concepto dominante es la reutilizacin. Estilos Arquitectnicos Un estilo arquitectnico es una lista de tipos de componentes que describen los

patrones o las interacciones a travs de ellos. Un estilo afecta a toda la arquitectura de software y puede combinarse en la propuesta de solucin. Los estilos ayudan a un tratamiento estructural que concierne ms bien a la teora, la investigacin acadmica y la arquitectura en el nivel de abstraccin ms elevado, expresando la arquitectura en un sentido ms formal y terico. Una vez que se han identificado los estilos, es lgico y natural pensar en reutilizarlos en situaciones semejantes que se presenten en el futuro. Cuando se habla de una arquitectura en tres capas, o una arquitectura cliente-servidor, tcitamente se est haciendo referencia a una clasificacin de las posibles configuraciones disponibles, en cuyo contexto adquiere un significado distintivo. No tiene sentido hablar de estilos si no se clarifica cul es la tipologa total en la que cada uno de ellos engrana. Definir una arquitectura como, por ejemplo, orientada a servicios ciertamente la tipifica, la distingue, la singulariza. La cuestin no es clasificarlas sino que al optar por una forma arquitectnica se define una situacin pragmtica. Una vez que los estilos adquieren una dimensin semntica precisa y diferencial, a su significado se asocian conceptos, herramientas, problemas, experiencias y antecedentes especficos. Existe una clasificacin de familias de estilos, entre los que podemos destacar: - Estilos de Flujo de Datos: Esta familia de estilos destaca la reutilizacin y la modificabilidad. Es apropiada para sistemas que implementan transformaciones de datos en pasos sucesivos. - Estilos Centrados en Datos: Pone nfasis en la integridad de los datos. Son tiles para sistemas que se centran en el acceso y actualizacin de datos. - Estilos de Llamada y Retorno: Pone mayor atencin sobre la modificabilidad y la escalabilidad del sistema. Son estilos que se utilizan para sistemas en gran escala. - Estilos de Cdigo Mvil: Su mayor inters est en la portabilidad. Como ejemplo estn los intrpretes.

Arquitectura de Software: Estilos y Patrones Adriana Almeira Vanina Perez Cavenago

Pag 6Estilo Vs Patrones Los estilos expresan componentes y las relaciones entre stos, con las restricciones de su aplicacin y la composicin asociada, as como tambin las reglas para su construccin. As mismo, se considera como un tipo particular de estructura fundamental para un sistema de software, junto con un mtodo asociado que especifica cmo construirlo. Por otra parte, los patrones arquitectnicos capturan existencia, experiencia comprobada en el desarrollo del software y ayudan a promover buenas prcticas de diseo. Cada patrn es especfico a un problema recurrente en el diseo e implementacin de un sistema de software. Un patrn, como ya se ha comentado, se considera un par problema solucin, resultado de la experiencia en el diseo de arquitecturas de sistemas y propone los patrones arquitectnicos como descripcin de un problema particular y recurrente de diseo, que aparece en contextos de diseo especfico, y presenta un esquema genrico demostrado con xito para su solucin. El esquema de solucin se especifica mediante la descripcin de los componentes que la constituyen, sus responsabilidades y desarrollos, as como tambin la forma como stos colaboran entre s. Por ltimo, un patrn de diseo provee un esquema para refinar los subsistemas o componentes de un sistema de software, o las relaciones entre ellos. Describe la estructura comnmente recurrente de los componentes en comunicacin, que resuelve un problema general de diseo en un contexto particular. Su aplicacin no tiene efectos en la estructura fundamental del sistema, pero s sobre la de un subsistema,

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

You might also like