Patrones Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción. desde el análisis hasta el diseño y desde la arquitectura hasta la implementación. Es una solución a un problema de diseño no trivial que es efectiva y reusable: a) ya ha resuelto un problema similar anteriormente de manera satisfactoria b) se puede aplicar a muchos problemas de diseño en diferentes circunstancias. Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms Patrones de Arquitectura Son formas predefinidas de resolver problemas de aquitectura. La arquitectura de un sistema de software casi nunca se limita a un solo patron o estilo de se arquitectura. Estilos Arquitectónicos Categorías Estilos Comunicación SOA (Service Oriented Architecture) Bus de Mensajes Distribución Cliente/Servidor 3-Capas N-Capas Estructura Basado en Componentes Orientado a Objetos Arquitectura de Capas Otras Dirigido por eventos Modelo-Vista-Controlador Patrones de Comunicación: SOA Esta arquitectura permite que la funcionalidad de la aplicación se provea combinando un conjunto de Servicios. Los servicios son débilmente acoplados ya que se basan en interfaces estándar que se pueden invocar publicar y describir. Se basan en un esquema de interacción con mensajes a través de sus interfaces según el esquema de definición. El estilo SOA permite empaquetar los proceso de negocios dentro de servicios interoperables, usando un amplio rango de protocolos y de formatos de datos para comunicar la información. XML HTTP WSDL SOAP REST Serialización de Objetos Patrones de Comunicación: Bus de Mensajes (Message Bus) Es un estilo para diseñar aplicaciones donde la interacción entre aplicaciones se realiza por pase de mensajes (usualmente asincrónicos) sobre un bus común. Oracle Service Bus. IBM WebSphere MQ. Message Queue Server Patrones de Distribución: Cliente/Servidor Describe un sistema distribuido que consta de un cliente, un sistema servidor, y una red de comunicación. (2-tier) El servidor es accedido por múltiples clientes. Generalmente, una aplicación de IUG que se comunica con el servidor de base de datos que contiene la lógica de negocio en forma de procedimientos almacenados. Patrones de Distribución: N-Tier / 3-Tier Es un estilo que describe la separación de la funcionalidad de la misma manera que el estilo de capas pero cada segmento de capa puede ser localizado en una computadora físicamente separada. Las N-tier se caracterizan por la descomposición funcional de aplicaciones, componentes de servicios, lo que provee escalabilidad, disponibilidad, manejabilidad, mantenibilidad y reutilización. Cada capa es independiente de las demás. Cliente Navegador Presentación Servidor Web Lógica de Negocio Middleware Aministración de Recursos Tecnología .Net Tecnología J2EE Patrones de Estructura: Basado en Componentes Esta arquitectura describe un enfoque basado en la descomposición del diseño en componentes funcionales o lógicos que exponen interfaces de comunicación que contienen métodos eventos y propiedades Es un nivel de abstracción más alto que el principio orientado a objeto. Un componente es un paquete, un servicio web, o un módulo. Patrones de Estructura: Diseño Dirigido por Dominio Es un estilo orientado a objeto que se enfoca en el modelado del dominio del negocio y en la definición de las entidades el negocio dentro del dominio. El modelo de dominio es el núcleo del sistema. Patrones de Estructura: Arquitectura de Capas Se enfoca en el agrupamiento de la funcionalidad de la aplicación en distintas capas ubicadas una sobre la otra. La funcionalidad de cada capa está relacionada a un mismo rol o responsabilidad común. L acomunicación entre caps es explícita y débilmente acoplada. Las capas pueden residir en la misma computadora física Arquitectura Dirigida por eventos Consiste en el diseño e implementación de aplicaciones que transmiten eventos entre componentes de SW débilmente acoplados y servicios Consiste en emisores o agentes y consumidores de eventos, que tienen la responsabilidad de reaccionar a los eventos. La API Java Swing se basa en una arquitectura dirigida por eventos (biblioteca gráfica) Arquitectura de patrón Modelo –VistaControlador Es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. Se ve frecuentemente en aplicaciones web, donde: la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio. El controlador es el responsable de recibir los eventos de entrada desde la vista. Elementos del patrón: Modelo: datos y reglas de negocio Vista: muestra la información del modelo al usuario Controlador: gestiona las entradas del usuario Patrones de Diseño Un patrón de diseño es una descripción de clases y objetos comunicándose entre sí, adaptado para resolver un problema de diseño general en un contexto particular Elementos de un patrón Nombre: describe el problema de diseño. El problema: describe cuándo aplicar el patrón. La solución: describe los elementos que componen el diseño, sus relaciones, responsabilidades y colaboración Categorías basadas en su PROPÓSITO Creacionales: Patrones creacionales tratan con las formas de crear instancias de objetos. Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades. Comportamiento: Los patrones de comportamiento nos ayudan a definir la comunicación e iteración entre los objetos de un sistema. El propósito de este patrón es reducir el acoplamiento entre los objetos. Patrones creacionales Abstract Factory Builder Factory Method Prototype Singleton Patrones Estructurales Adapter Bridge Composite Decorator Facade Flyweight Proxy Patrones de Comportamiento Chain of Responsibility Command Interpreter Iterator Mediator Memento. Observer State Strategy Template Method Visitor Creacional: Singleton Muchas veces, en nuestras aplicaciones necesitamos acceder fácilmente a un objeto único, la instancia única de cierta clase: un gestor de impresoras, un pool de conexiones a una base de datos, un gestor de parámetros de configuración, etc. Estructural: Composición Se trata de un patrón estructural y su propósito es la composición de objetos en estructuras de árbol para representar jerarquías parte-todo. El patrón permitirá a los clientes tratar de forma uniforme los objetos y las composiciones Comportamiento: State Se utiliza cuando el comportamiento de un objeto cambia dependiendo del estado del mismo y existe una gran complejidad en el código. Se implementa una clase para cada estado diferente del objeto y el desarrollo de cada método según un estado determinado. El objeto de la clase a la que le pertenecen dichos estados resuelve los distintos comportamientos según su estado, con instancias de dichas clases de estado. Patrones J2EE De acuerdo al libro "J2EE PATTERNS Best Practices and Design Strategies", existen 5 capas en la arquitectura J2EE: Cliente Presentación Negocios Integración Recurso http://java.ciberaula.com/articulo/diseno_patrones_j 2ee/ http://java.sun.com/blueprints/corej2eepatterns/Patt erns/index.html Idioms Patrones de bajo nivel. Solucionan problemas específicos de la implementación en un lenguaje de programación. Ej: Conveciones de nombres, Formato para el código fuente, Manejo de memoria.