Articulo arquitectura del software.docx

10
Universidad de Cartagena. Mendoza Arquitectura de Software: Estilos y patrones arquitectónicos I. INTRODUCCIÓN La arquitectura de software se refiere a la estructura de todo el software y a la forma en que la estructura proporciona la totalidad conceptual de un sistema. El diseño arquitectónico define la relación entre los elementos estructurales primordiales del software , los patrones de diseño se utilizan para lograr los requisitos que se han definido para el sistema, y las restricciones que afectan la manera en la que se usan los patrones arquitectónicos. Los patrones expresan el esquema fundamental de organización para sistemas de software. Tienen un un conjunto de subsistemas predefinidos, especifican sus responsabilidades e incluyen reglas o guias para organizar las relaciones entre ellos, asi que nos ayuda a especificar la estructura fundamental de una aplicación. Cuando nos referimos a arquitectura de tres capas hablamos de la arquitectura Cliente Servidor, MVC u Orientada a Servicios El MVC es el acrónimo de Modelo vista controlador es orientada a objeto, es la comunicación entre un modelo de datos, una vista y unos objetos que los controlan, hoy en día hay muchas empresas que usan la arquitectura MVC ya que pueden documentar y reutilizar mas fácilmente el código. En el mundo de TCP/IP las comunicaciones entre computadoras se rigen básicamente por lo que se Llama modelo Cliente-Servidor, éste es un modelo que intenta proveer usabilidad, flexibilidad, interoperabilidad y escalabilidad en las Comunicaciones. El término Cliente/Servidor fue usado por Arquitectura de Software: Estilos y patrones arquitectónicos Universidad de Cartagena Facultad de Ingeniería 1

Transcript of Articulo arquitectura del software.docx

Page 1: Articulo arquitectura del software.docx

Universidad de Cartagena. Mendoza Arquitectura de Software: Estilos y patrones arquitectónicos

I. INTRODUCCIÓN

La arquitectura de software se refiere a la estructura de todo el software y a la forma en que la estructura proporciona la totalidad conceptual de un sistema.El diseño arquitectónico define la relación entre los elementos estructurales primordiales del software , los patrones de diseño se utilizan para lograr los requisitos que se han definido para el sistema, y las restricciones que afectan la manera en la que se usan los patrones arquitectónicos.Los patrones expresan el esquema fundamental de organización para sistemas de software. Tienen un un conjunto de subsistemas predefinidos, especifican sus responsabilidades e incluyen reglas o guias para organizar las relaciones entre ellos, asi que nos ayuda a especificar la estructura fundamental de una aplicación.

Cuando nos referimos a arquitectura de tres capas hablamos de la arquitectura Cliente Servidor, MVC u Orientada a Servicios

El MVC es el acrónimo de Modelo vista controlador es orientada a objeto, es la comunicación entre un modelo de datos, una vista y unos objetos que los controlan, hoy en día hay muchas empresas que usan la arquitectura MVC ya que pueden documentar y reutilizar mas fácilmente el código.

En el mundo de TCP/IP las comunicaciones entre computadoras se rigen básicamente por lo que se

Llama modelo Cliente-Servidor, éste es un modelo que intenta proveer usabilidad, flexibilidad, interoperabilidad y escalabilidad en las Comunicaciones. El término Cliente/Servidor fue usado por primera vez en 1980 Para referirse a Computadores en red.Este modelo Cliente/Servidor empezó a ser aceptado a finales de los años 80. Su funcionamiento es sencillo: se tiene una máquina cliente, que requiere un servicio de una máquina servidor, y éste realiza la función para la que está programado , una computadora puede tener dos funciones cliente y servidor dependiendo del software de configuración.

SOA es un estilo de arquitectura que enfatiza el uso de servicios de red, seguros, compartibles, sirve para incrementar la flexibilidad del negocio. Desde una perspectiva empresarial, los servicios son activos independientes que se corresponden con actividades comerciales reconocibles o funciones comerciales del mundo real y que son accesibles de acuerdo con las políticas que se hayan establecido para los mismos.

II. DEFINICIONES

Es posible encontrar numerosas significados del término Arquitectura de Software, cada una con planteamientos diversos. Se hace evidente que su conceptualización sigue todavía en discusión, puesto que no es posible referirse a un diccionario en busca de un significado, y tampoco existe un estándar que pueda ser tomado como marco de referencia. Sin embargo, al hacer un análisis detallado de cada uno de los conceptos disponibles, resulta

Arquitectura de Software: Estilos y patrones arquitectónicos

Universidad de Cartagena Facultad de Ingeniería1

Page 2: Articulo arquitectura del software.docx

Universidad de Cartagena. Mendoza Arquitectura de Software: Estilos y patrones arquitectónicos

interesante la existencia de ideas comunes entre los mismos, sin observarse planteamientos contradictorios, sino más bien complementarios. La intención primordial del análisis no es concluir ni proponer un concepto que englobe todas las ideas planteadas hasta el momento, sino establecer aquellos elementos que no deben perderse de vista al momento de introducirse en el contexto de las arquitecturas de software, y por tanto, en un ambiente de evaluación de arquitectura de software.

La arquitectura de software cuenta con varios modelos, ellos son:

A. Modelos estructurales

Son similares a la vista estructural, pero su énfasis principal radica en la estructura coherente del sistema completo, en vez de concentrarse en su composición. Los modelos de framework a menudo se refieren a dominios o clases de problemas específicos. El trabajo que ejemplifica esta variante incluye arquitecturas de software específicas de dominios, como CORBA, o modelos basados en CORBA, o repositorios de componentes específicos, como PRISM.

B. Modelos dinámicos

puede referirse a los cambios en la configuración del sistema, o a la dinámica involucrada en el progreso de la computación, tales como valores cambiantes de datos.

C. Modelos de proceso

Se concentran en la construcción de la arquitectura, y en los pasos o procesos involucrados en esa construcción. En esta perspectiva, la arquitectura es el resultado de seguir un argumento (script) de proceso. Esta vista se ejemplifica con el actual trabajo sobre programación de procesos para derivar arquitecturas.

III. CONCEPTOS FUNDAMENTALESA lo largo del proceso de diseño y desarrollo, los atributos de calidad juegan un papel importante, pues en base a estos se generan las decisiones de diseño y argumentos que los justifican (Bass et al., 2000). Dado que la arquitectura de software inhibe o facilita los atributos de calidad (Bass et al., 1998), resulta de particular interés analizar la influencia de ciertos elementos de diseño utilizados para la definición de la misma, determinando sus características. Estos elementos de diseño son los estilos arquitectónicos, los patrones arquitectónicos y los patrones de diseño.

A. Estilo Arquitectónico

Shaw y Garlan(1996) definen estilo arquitectónico como una familia de sistemas de software en términos de un patrón de organización estructural, que define un vocabulario de componentes y tipos de conectores y un conjunto de restricciones de cómo pueden ser combinadas. Para muchos estilos puede existir uno o más modelos semánticos que especifiquen cómo determinar las propiedades generales del sistema partiendo de las propiedades de sus partes.

Los estilos arquitectónicos son los siguientes:

Datos Centralizados

Sistemas en los cuales cierto número de clientes accede y actualiza datos compartidos de un

repositorio de manera frecuente.

Flujo de Datos

El sistema es visto como una serie de transformaciones sobre piezas sucesivas de datos de entrada. El dato ingresa en el sistema, y fluye entre los componentes, de uno en uno, hasta que se le asigne un destino final (salida o

repositorio).

Máquinas Virtuales

2

Page 3: Articulo arquitectura del software.docx

Universidad de Cartagena. Mendoza Arquitectura de Software: Estilos y patrones arquitectónicos

Simulan alguna funcionalidad que no es nativa al hardware o software sobre el que está implementado.

Llamada y Retorno

El sistema se constituye de un programa principal que tiene el control del sistema y varios subprogramas que se comunican con éste mediante el uso de llamadas.

Componentes Independientes

Consiste en un número de procesos u objetos Independientes que se comunican a través de mensajes.

B. Patrón Arquitectónico

Lenguajes de Buschmann et al. (1996) define patrón como una regla que consta de tres partes, la cual expresa una relación entre un contexto, un problema y una solución. Un patrón sigue el siguiente esquema:

a. Contexto. Es una situación de diseño en

la que aparece un problema de diseño b. Problema. Es un conjunto de fuerzas que

aparecen repetidamente en el contexto c. Solución. Es una configuración que

equilibra estas fuerzas. Ésta abarca: Estructura con componentes y relaciones

Para utilizar la arquitectura de software se sigue un conjunto de patrones arquitectónicos, entre los cuales podemos encontrar:

cliente-servidorConsiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

Funciones de los clientes-servidor

Manejo de la interfaz de usuario. 

Captura y validación de los datos de entrada. 

Generación de consultas e informes sobre las bases de datos. 

Por su parte los servidores realizan, entre otras, las siguientes funciones: 

Gestión de periféricos compartidos.  Control de accesos concurrentes a bases de

datos compartidas.  Enlaces de comunicaciones con otras redes de

área local o extensa.

FIGURA 1

ARQUITECTURA CLIENTE-SERVIDOR

Layers

Consiste en estructurar aplicaciones que pueden ser descompuestas en grupos de subtareas, las cuales se clasifican de

3

Page 4: Articulo arquitectura del software.docx

Universidad de Cartagena. Mendoza Arquitectura de Software: Estilos y patrones arquitectónicos

acuerdo a un nivel particular de abstracción.

Pipes and FiltresProvee una estructura para los sistemas que procesan un flujo de datos. Cada paso de procesamiento está encapsulado en un Componente filtro (filter). El dato pasa a través de conexiones (pipes), entre filtros adyacentes.

Blackboard

Aplica para problemas cuya solución utiliza estrategias no determinanticas. Varios subsistemas ensamblan su conocimiento para construir una posible solución parcial ó semejante.

Model-View- Controller

Divide una aplicación interactiva en tres Componentes.

Modelo (Model)

El modelo es la porción que implementa la “Lógica del Negocio”.

Se llama el modelo porque representa objetos y sus interacciones del mundo real.

Vistas (View)

Las vistas son las porciones de la aplicación MVC que presentan salida al usuario.

La salida más común para aplicaciones web es el HTML.

Controlador (Controller)

El controlador es el corazón de la aplicación MVC. Este componente es el objeto que debería estar pendiente de las

solicitudes HTTP hechas por el usuario.

El controlador generalmente crea instancias de los modelos y utiliza métodos de esos modelos para conseguir los datos que se presentan a los usuarios, enviándolos a la vista correspondiente.

FIGURA 2

MODELO-VISTA-CONTROLADOR

Arquitectura Orientada a Servicio

La Arquitectura SOA establece un marco de diseño para la integración de aplicaciones independientes de manera que desde la red pueda accederse a sus funcionalidades, las cuales se ofrecen como servicios. La forma más habitual de implementarla es mediante Servicios Web, una tecnología basada en estándares e independiente de la plataforma, con la que SOA puede descomponer aplicaciones monolíticas en un conjunto de servicios e implementar esta funcionalidad en forma modular.

Diferencias entre MVC, SOA y Cliente Servidor

La arquitectura cliente servidor es utilizado para aplicaciones web como para brindar servicio de alto nivel o paginas web dinámicas es un modelo en donde se crea aplicaciones en las que las tareas

4

Page 5: Articulo arquitectura del software.docx

Universidad de Cartagena. Mendoza Arquitectura de Software: Estilos y patrones arquitectónicos

a realizar se dividen en procesos independientes que cooperan entre si para proveer un servicio o una respuesta y el MVC es un tipo de arquitectura muy parecido a cliente servidor con la diferencia de que el modelo vista controlador sigue un patrón de diseño en donde son divididos los componentes de la aplicación según su función en las tres diferentes clasificaciones que lo componen, que son el modelo , la vista y el controlador .La diferencia La arquitectura orientada a servicios con otra arquitectura es que usa un marco de trabajo para el desarrollo de software y un marco de trabajo de implementación y también a diferencia de las arquitecturas orientado a objetos, las SOA están formadas por servicios de aplicación débilmente acoplados y altamente interoperables.

El estilo SOA tiene las siguientes características que lo identifican:

La interacción con los servicios es desacoplada.

Puede involucrar procesos de negocios que se convierten en servicios interoperables.

Clientes y otros servicios pueden accede a servicios locales que se ejecutan en el mismo nivel.

Clientes y otros servicios acceden a servicios remotos sobre una red que los conecta.

Estos servicios pueden usar un rango de protocolos y formatos de datos para comunicar información.

Los mayores beneficios de arquitectura SOA son:

Alineación con el Dominio. El re-uso de servicios comunes con interfaces estándar incrementa las oportunidades de negocios y reduce costos.

 Abstracción. Los servicios son autónomos y se accede a ellos a través de un contrato formal lo que provee desacople y abstracción.

Capacidad de Descubrimiento. Los servicios pueden exponer descripciones que permiten a otras aplicaciones y servicios localizarlos y determinar de forma automática la interfaz.

FIGURA 3

ARQUITECTURA ORIENTADA A SERVICIOS

C. Patrón de Diseño

Un patrón de diseño provee un esquema para refinar los subsistemas o componentes de un sistema de software, o las relaciones entre ellos. Describe la estructura comúnmente recurrente de los componentes en comunicación, que resuelve un problema general de diseño en un contexto particular (Buschman et al., 1996). Son menores en escala que los patrones arquitectónicos, y tienden a ser independientes de los lenguajes y paradigmas de programación. Su aplicación no tiene efectos en la estructura fundamental del sistema, pero sí sobre la de un subsistema (Buschman et al., 1996), debido a que especifica a un mayor nivel de detalle, sin llegar a la implementación, el comportamiento de los componentes del subsistema.

presenta algunos patrones de diseño que son:

Whole-Part

Ayuda a constituir una colección de objetos que juntos conforman una unidad semántica.

Master-Slave Un componente maestro (master) distribuye el trabajo a los componentes esclavos (slaves). El componente maestro calcula un resultado final a partir de los resultados arrojados por los componentes esclavos.

5

Page 6: Articulo arquitectura del software.docx

Universidad de Cartagena. Mendoza Arquitectura de Software: Estilos y patrones arquitectónicos

ProxyLos clientes asociados a un componente se comunican con un representante de éste, en lugar del componente en sí mismo.

Command ProcesorSepara las solicitudes de un servicio de su ejecución. Maneja las solicitudes como objetos separados, programa sus ejecuciones y provee servicios adicionales como el almacenamiento de los objetos solicitados, para permitir que el usuario pueda deshacer alguna solicitud.

View HandlerAyuda a manejar todas las vistas que provee un sistema de software. Permite a los clientes abrir, manipular y eliminar vistas. También coordina dependencias entre vistas y organiza su actualización.

Forwarder receiver

Provee una comunicación transparente entre procesos de un sistema de software con un modelo de interacción punto a punto (peer to peer).

Client-Dispatcher-Server

Introduce una capa intermedia entre clientes y servidores, es el componente despachador (dispatcher). Provee una ubicación transparente por medio de un nombre de servicio, y esconde los detalles del establecimiento de una conexión de Comunicación entre clientes y servidores.

Publisher-SubscriberAyuda a mantener sincronizados los componentes en cooperación. Para ello, habilita una vía de propagación de cambios: un editor (publisher) notifica a los suscriptores (suscribers) sobre los cambios en su estado.

Referencias

[1]  http://www.desarrolloweb.com/articulos/1622.php

6

Page 7: Articulo arquitectura del software.docx

Universidad de Cartagena. Mendoza Arquitectura de Software: Estilos y patrones arquitectónicos

[2] www.adelat.org/.../modelo_clienteservidor.htm

[3] Abowd, G., Allen, R., & Garlan, D. (1995). Formalizing Style to Understand Descriptions of Software Architecture. Technical Report. The Software Engineering Institute, Carnegie Mellon University. C MU-CS-95-111. Obtenido el 15-08-2002 de: http://www2.cs.cmu.edu/afs/cs.cmu.edu/project/able/ftp/styleformalism-tosem95.pdf

[4] Bass, L., Clements, P., & Kazman, R. (1998). Software Architecture in practice. Addison-Wesley.

[5] D. Garlan y M. Shaw, «An Introduction to Software Architecture,» World Scientific Publishing Company, New Jersey, 1994.

[6] Bass, L., Klein, M., & Bachmann, F. (2000). Quality Attribute Design Primitives. Software Engineering Institute, Carnegie Mellon University. Obtenido el 30-06-2002 de:http://www.sei.cmu.edu/publications/documents/00.reports/00tn017.html

[7] es.wikipedia.org/wiki/Cliente-servidor[8] http://www.tress.com.mx/espanol/ventas/cliente-servidor/X-base.

[9]http://www.juanpelaez.com/geek-stuff/arquitectura/arquitectura-orientada-a-servicios-soa/

7