TIPOS DE PATRONES. PATRONES DE DISEÑO: Las soluciones probadas para el diseño de software. En estas nos vamos a centrar.



Documentos relacionados
Patrones. (Conceptos Generales)

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

Patrones de software y refactorización de código

PATRONES DE DISEÑO. FAVA - Formación en Ambientes Virtuales de Aprendizaje. SENA - Servicio Nacional de Aprendizaje

Curso de Spring Framework

Capítulo 4 Patrones y Patrones de Diseño (ii)

Patrones de diseño en Java Los 23 modelos de diseño: descripción y soluciones ilustradas en UML 2 y Java

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

UML 2 Iniciación, ejemplos y ejercicios corregidos

Patrones de diseño en PHP Los 23 modelos de diseño: descripciones y soluciones ilustradas en UML2 y PHP

ASIGNATURA: Ingeniería de software II DOCENTE: Licda.Carla Milagro López Vásquez RESPONSABLE: Rodolfo Alberto Palma Ramos CARRERA:


CLASE 10: MÁS PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez

Depto de Cs e Ing. de la Computación Universidad Nacional del Sur

DISEÑO DE APLICACIONES ORIENTADAS A OBJETOS

Patrones de diseño. Programación III.I.T.I. de Sistemas. Contenidos. Información sobre patrones de diseño. Motivación.

Lógica de Negocios. Esteban Calabria 2007

Temario máster Java. Módulo 1 Fundamentals of the Java Programming Language. Duración: 40 horas

[CASI v.0109] Pág. 1

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

JAVA EE 5. Arquitectura, conceptos y ejemplos.

5.6.3 Session Facade

Capitulo III. Diseño del Sistema.

Patrones de diseño. Sesión 1: Introducción y patrones básicos. Especialista Universitario Java Enterprise

Capítulo 2 : Marco Teórico

BPMN Business Process Modeling Notation

Una Arquitectura para una Herramienta de Patrones de Diseño

Introducción a la Programación de Videojuegos y Gráficos

Instructivo para la elaboración de un Manual Técnico

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

Introducción. Metadatos

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Capítulo I. Marco Teórico

1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

ESCUELA POLITÉCNICA NACIONAL

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

Interoperabilidad de Fieldbus

Plataforma desarrollo Java Formación elearning tutorizada en castellano. Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

Estilos Arquitectónicos

IN77J Orientación al Objeto para el e-business. 6. Diseño

Planificaciones Técnicas de Diseño. Docente responsable: PANTALEO GUILLERMO GUSTAVO. 1 de 5

Diseño Basado en Componentes. Curso 2008/09

Patrones de Diseño Orientados a Objetos 2 Parte

Seminario en CD Bases para Java

ARQUITECTUA DE M2M MIGUEL ÁLVAREZ Y CLARA HERRERO. Documento inicial

Diseño orientado a los objetos

MASTER JAVA AVANZADO Master en desarrollo de aplicaciones avanzadas con JAVA 2008

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com

Data Source. Lic. Esteban Calabria 2007

Introducción a la Programación Orientada a Objetos (POO) Introducción a la Programación Orientada a Objetos (POO)

QUÉ ES Y PARA QUÉ SIRVE UML? VERSIONES DEL LENGUAJE UNIFICADO DE MODELADO. TIPOS DE DIAGRAMAS. INGENIERÍA DEL SOFTWARE (DV00205D)

Capítulo 5. Cliente-Servidor.

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

Capítulo II. Arquitectura del Software

Web Frameworks y patrones de diseño

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2

CAPÍTULO 4 ANÁLISIS Y DISEÑO: e-commerce CONSTRUCTOR

Capítulo 1 Documentos HTML5

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

2.2.- Paradigmas de la POO

Curso de Java POO: Programación orientada a objetos

Resumen obtenido de: Roger S. Pressman, Ingeniería de Software. Un enfoque práctico, quinta edición, Introducción al Diseño de Software

M.T.I. Arturo López Saldiña

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Conclusiones. Particionado Consciente de los Datos

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

32 - CÓMO PROGRAM A R AC T I V I D A D E S E N

SISTEMAS DE INFORMACIÓN I TEORÍA

Bienvenidos a la presentación, producción de informes y depuración (debugging). En esta unidad discutiremos la producción de informes utilizando la

Service Oriented Architecture: Con Biztalk?

Análisis y diseño del sistema CAPÍTULO 3

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Curso de HTML5 y CSS3

ESTÁNDAR DIAGRAMA DE SECUENCIA

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

Ingeniería del Software. Diseño. Diseño en el PUD. Diseño de software. Patrones arquitectónicos. Diseño Orientado a Objetos en UML

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Patrones de Diseño GOF (The Gang of Four) en el contexto de Procesos de Desarrollo de Aplicaciones Orientadas a la Web

TRABAJO DE DIPLOMA CÓDIGO DE MATERIA 29

El Proceso Unificado de Desarrollo de Software

SISTEMAS DE INFORMACIÓN III TEORÍA

ARQUITECTURAS DE PROCESOS DE NEGOCIOS INGENIERIA DE SOFTWARE ING. MA. MARGARITA LABASTIDA ROLDÁN

Patrones de Diseño EJERCICIOS

Notas técnicas de JAVA Nro. 7 Tip Breve

Curso de Java EE Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1

Capitulo 2. Marco Teórico

Aná lisis, disen o y prográmácio n orientádá á objetos con JAVA

Aplicaciones Móviles. Unidad 2: Patrones de Diseño de Software

Sesión No. 7. Contextualización: Nombre de la sesión: Intelisis Business Intelligence PAQUETERÍA CONTABLE

SÍNTESIS Y PERSPECTIVAS

Capítulo 2. Marco Teórico

Java 7.0 Advanced Application Developer

Desarrollo de Software con

Metadatos en Plataformas ECM

Novedades. Introducción. Potencia

Transcripción:

TIPOS DE PATRONES Hoy, podemos encontrar literalmente miles de patrones definidos. Resulta imposible para un programador conocerlos todos, ni mucho menos probarlos o valorarlos. Así que necesitamos una clasificación sencilla (aunque incompleta) para al menos poder situarlos. OTROS TIPOS DE PATRONES Generalmente, cuando hablamos de patrones, hablamos de "Patrones de Diseño", hay otros tipos de patrones? Lo cierto es que el concepto de patrón como una buena idea para resolver un problema, se aplica en ámbitos muy diversos. Hay patrones para información visual, patrones pedagógicos, patrones de costura... pero incluso reduciéndolo sólo al ámbito del software tenemos: PATRONES DE ARQUITECTURA: Soluciones probadas para estructurar los componentes, como son Modelo- Vista-Controlador, arquitectura en tres capas, peer to peer, arquitectura orientada a servicios... PATRONES WEB: Soluciones probadas para la creación de sitios web, como son la maquetación en tres columnas, efectos de rollover, estructuras de blog... PATRONES DE DISEÑO: Las soluciones probadas para el diseño de software. En estas nos vamos a centrar. PATRONES DE PROGRAMACIÓN: Soluciones específicas para algoritmos y estructuras de control, como son algoritmos de ordenación, procedimientos de recursión e iteración, etc. PATRONES DE REFACTORIZACIÓN: Soluciones para simplificar el código, como la variable explicativa, extracción de métodos, sobrecarga de constructores, etc. CLASIFICACIÓN DE PATRONES DE DISEÑO Podemos agrupar los patrones de diseño según el problema que abordan: Creacionales: Abordan problemas de creación de objetos. Entre estos patrones están la factoría, la factoría abstracta, el singleton, etc. Estructurales: Abordan problemas sobre relaciones entre entidades. Entre ellos: la fachada, el adaptador, el decorador... De Comportamiento: Abordan problemas de comunicación entre entidades. Por ejemplo observador, estrategia, plantilla, etc.

Seguramente esta clasificación puede extenderse ad-infinitum, pero estas son las categorías principales. UNA CLASIFICACIÓN SENCILLA E INCOMPLETA Pero necesitamos algo más fácil. Con la clasificación anterior podríamos pasar días discutiendo si un patrón es estructural o de comportamiento y encontraríamos cientos de patrones que pueden ser clasificados en varias categorías o que requieren otras nuevas. En definitiva, no resultaría fácil encontrar patrones que, al fin y al cabo, es nuestro objetivo. Así que, en estas páginas he optado por una clasificación mucho más sencilla y mucho más incompleta, clasificaré los patrones por su objetivo. Tenemos un objetivo único: reducir el riesgo del proyecto. Y para ello, atacamos a los dos componentes del riesgo: los cambios y los errores. Así nos encontramos con Patrones Para Facilitar el Cambio y Patrones para Prevenir Errores. Además, utilizaremos también el origen de cada patrón. Uno de los principales libros sobre patrones de software es Design Patterns: Elements of Reusable Object-Oriented Software, escrito por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, desde entonces conocidos como "La Banda de los Cuatro" o GoF (Gang of Four). También es relevante el libre "Applying UML And Patterns" de Craig Larman. Los patrones que define Larman tienen su origen en GRASP (General Responsability Assignment Software Principles) y muchos de ellos son más "principios" para orientar la toma de decisiones de diseño que patrones (soluciones directamente aplicables). En resumen, nos encontraremos con patrones GoF, patrones GRASP y Principios Generales. Podemos agrupar los patrones en tres grandes grupos: Patrones de creación. Estos patrones se utilizan cuando debemos crear objetos pero debemos tomar decisiones dinámicamente en el proceso de creación. Para ésto lo que hacemos es abstraer el proceso de creación de los objetos para realizar la decisión de qué objetos crear o cómo crearlos para el momento en que se tenga que hacer. Patrones de creación son: Abstract Factory, Builder, Factory Method, Object Pool, Prototype y Singleton. Patrones estructurales. Nos describen como utilizar estructuras de datos complejas a partir de elementos más simples. Sirven para crear las interconexiones entre los distintos objetos y que estas relaciones no se vean afectadas por cambios en los requisitos del programa. Algunos ejemplos de patrones estructurales son: Adapter, Bridge, Decorator, Facade, Flyweight y Proxy. Patrones de comportamiento. Fundamentalmente especifican el comportamiento entre objetos de nuestro programa. Hay varios: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento (o Snapshot), Observer, State, Strategy, Template Method y Visitor.

PATRONES DE DISEÑO EN APLICACIONES WEB CON JAVA J2EE Como analistas y programadores vamos desarrollando a diario nuestras habilidades para resolver problemas usuales que se presentan en el desarrollo del software. Por cada problema que se nos presenta pensamos distintas formas de resolverlo, incluyendo soluciones exitosas que ya hemos usado anteriormente en problemas similares. Es así que a mayor experiencia que tengamos, nuestro abanico de posibilidades para resolver un problema crece, pero al final siempre habrá una sola solución que mejor se adapte a nuestra aplicación. Si documentamos esta solución, podemos reutilizarla y compartir esa información que hemos aprendido para resolver de la mejor manera un problema específico. Los patrones del diseño tratan los problemas del diseño que se repiten y que se presentan en situaciones particulares del diseño, con el fin de proponer soluciones a ellas. Por lo tanto, los patrones de diseño son soluciones exitosas a problemas comunes. Existen muchas formas de implementar patrones de diseño. Los detalles de las implementaciones son llamadas estrategias. En este artículo, veremos algunos patrones de diseño para las aplicaciones basadas en J2EE. BREVE HISTORIA DE LOS PATRONES DE DISEÑO Un patrón de diseño es una abstracción de una solución en un nivel alto. Los patrones solucionan problemas que existen en muchos niveles de abstracción. Hay patrones que abarcan las distintas etapas del desarrollo; desde el análisis hasta el diseño y desde la arquitectura hasta la implementación. Muchos diseñadores y arquitectos de software han definido el término de patrón de diseño de varias formas que corresponden al ámbito a la cual se aplican los patrones. Luego, se dividió los patrones en diferentes categorías de acuerdo a su uso. Los diseñadores de software extendieron la idea de patrones de diseño al proceso de desarrollo de software. Debido a las características que proporcionaron los lenguajes orientados a objetos (como herencia, abstracción y encapsulamiento) les permitieron relacionar entidades de los lenguajes de programación a entidades del mundo real fácilmente, los diseñadores empezaron a aplicar esas características para crear soluciones comunes y reutilizables para problemas frecuentes que exhibían patrones similares. Fue por los años 1994, que apareció el libro "Design Patterns: Elements of Reusable Object Oriented Sofware" escrito por los ahora famosos Gang of Four (GoF, que en español es la pandilla de los cuatro) formada por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides. Ellos recopilaron y documentaron 23 patrones de diseño aplicados usualmente por expertos diseñadores de software orientado a objetos. Desde luego que ellos no son los inventores ni los únicos involucrados, pero ese fue luego de la publicación de ese libro que empezó a difundirse con más fuerza la idea de patrones de diseño. El grupo de GoF clasificaron los patrones en 3 grandes categorías basadas en su PROPÓSITO: creacionales, estructurales y de comportamiento.

Creacionales: Patrones creacionales tratan con las formas de crear instancias de objetos. El objetivo de estos patrones es de abstraer el proceso de instanciación y ocultar los detalles de cómo los objetos son creados o inicializados. Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades. Estos objetos adicionados pueden ser incluso objetos simples u objetos compuestos. 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. En el segundo nivel, ellos clasificaron los patrones en 2 ámbitos: Clases y objetos. Es así que, tenemos 6 tipos de patrones: CREACIONALES Creacional de la Clase: Los patrones creacionales de Clases usan la herencia como un mecanismo para lograr la instanciación de la Clase. Por ejemplo el método Factoría. Creacional del objeto: Los patrones creacionales de objetos son más escalables y dinámicos comparados de los patrones creacionales de Clases. Por ejemplo la Factoría abstracta y el patrón Singleton. ESTRUCTURALES Estructural de la Clase: Los patrones estructurales de Clases usan la herencia para proporcionar interfaces más útiles combinando la funcionalidad de múltiples Clases. Por ejemplo el patrón Adaptador (Clase). Estructural de Objetos: Los patrones estructurales de objetos crean objetos complejos agregando objetos individuales para construir grandes estructuras. La composición de l patrón estructural del objeto puede ser cambiado en tiempo de ejecución, el cual nos da flexibilidad adicional sobre los patrones estructurales de Clases. Por ejemplo el Adaptador (Objeto), Facade, Bridge, Composite. COMPORTAMIENTO Comportamiento de Clase: Los patrones de comportamiento de Clases usan la herencia para distribuir el comportamiento entre Clases. Por ejemplo Interpreter. Comportamiento de Objeto: Los patrones de comportamiento de objetos nos permite analizar los patrones de comunicación entre objetos interconectados, como objetos incluidos en un objeto complejo. Ejemplo Iterator, Observer, Visitor.

PATRONES J2EE Con la aparición del J2EE, todo un nuevo catálogo de patrones de diseño apareció. Desde que J2EE es una arquitectura por si misma que involucra otras arquitecturas, incluyendo servlets, JavaServer Pages, Enterprise JavaBeans, y más, merece su propio conjunto de patrones específicos para diferentes aplicaciones empresariales. 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 El libro explica 15 patrones J2EE que están divididos en 3 de las capas: presentación, negocios e integración. CATÁLOGO DE PATRONES J2EE CAPA DE PRESENTACIÓN Decorating Filter / Intercepting Filter Front Controller/ Front Component Un objeto que está entre el cliente y los componentes Web. Este procesa las peticiones y las respuestas. Un objeto que acepta todos los requerimientos de un cliente y los direcciona a manejadores apropiados. El patrón Front Controller podría dividir la funcionalidad en 2 diferentes objetos: el Front Controller y el Dispatcher. En ese caso, El Front Controller acepta todos los requerimientos de un cliente y realiza la autenticación, y el Dispatcher direcciona los requerimientos a manejadores apropiada. View Helper Un objeto helper que encapsula la lógica de acceso a datos en beneficio de los componentes de la presentación. Por ejemplo, los JavaBeans pueden ser usados como patrón View Helper para las páginas JSP. Composite view Un objeto vista que está compuesto de otros objetos vista. Por ejemplo, una página JSP que incluye otras páginas JSP y HTML usando la directiva include o el action include es un patrón Composite View. Service Worker To Es como el patrón de diseño MVC con el Controlador actuando como Front Controller pero con una cosa importante: aquí el Dispatcher (el cual es parte del Front Controller) usa View Helpers a gran escala y ayuda en el manejo de la vista. Dispatcher View Es como el patrón de diseño MVC con el controlador actuando como Front Controller pero con un asunto importante: aquí el Dispatcher (el cual es parte del Front Controller) no usa View Helpers y realiza muy poco trabajo en el manejo de la vista. El manejo de la vista es manejado por los mismos componentes de la Vista.

CAPA DE NEGOCIOS Business Delegate Un objeto que reside en la capa de presentación y en beneficio de los otros componentes de la capa de presentación llama a métodos remotos en los objetos de la capa de negocios. Value Object/ Data Transfer Object/ Replicate Object Un objeto serializable para la transferencia de datos sobre lar red. Session Session Façade/ Façade Façade/ Entity Distributed El uso de un bean de sesion como una fachada (facade) para encapsular la complejidad de las interacciones entre los objetos de negocio y participantes en un flujo de trabajo. El Session Façade maneja los objetos de negocio y proporciona un servicio de acceso uniforme a los clientes. Aggregate Entity Un bean entidad que es construido o es agregado a otros beans de entidad. Value Assembler Object Un objeto que reside en la capa de negocios y crea Value Objets cuando es requerido. Value List Handler/ Page-by-Page Iterator/ Paged List Es un objeto que maneja la ejecución de consultas SQL, caché y procesamiento del resultado. Usualmente implementado como beans de sesión. Service Locator Consiste en utilizar un objeto Service Locutor para abstraer toda la utilización JNDI y para ocultar las complejidades de la creación del contexto inicial, de búsqueda de objetos home EJB y recreación de objetos EJB. Varios clientes pueden reutilizar el objeto Service Locutor para reducir la complejidad del código, proporcionando un punto de control. CAPA DE INTEGRACIÓN Data Object Activator Access Service Consiste en utilizar un objeto de acceso a datos para abstraer y encapsular todos los accesos a la fuente de datos. El DAO maneja la conexión con la fuente de datos para obtener y almacenar datos. Service Activator Se utiliza para recibir peticiones y mensajes asíncronos de los clientes. Cuando se recibe un mensaje, el Service Activator localiza e invoca a los métodos de los componentes de negocio necesarios para cumplir la petición de forma asíncrona.