Académique Documents
Professionnel Documents
Culture Documents
Agenda
Historia Definicin Categoras de patrones Patrones arquitectnicos Patrones de diseo Idiomas Elementos de un patrn Alexander GoF Tipos de patrones
Historia
Christopher Alexander, naci el cuatro de octubre de 1936 en Vienna, estudi arquitectura en la Universidad de Harvard y escribi varios libros sobre patrones en arquitectura. Alexander considera que los usuarios saben ms sobre los edificios que necesitan que lo que podra llegar a saber un arquitecto; adems produjo y valid, junto con otros, un lenguaje de patrones diseado para empoderar a cualquiera en el diseo y construccin a cualquier escala. Hoy en da es profesor emrito de la Universidad de California, Berkeley.
Historia
Ward Cunningham y Kent Beck creen que las ideas de Alexander son tambin vlidas en el campo de la ingeniera de software: los usuarios de computadores deben escribir sus propios programas. Este trabajo fue enviado a la conferencia anual de la ACM de Object Oriented Programming, Systems, Languajes & Applications. La idea de Alexander se articula en torno de un concepto llamado lenguaje patrn.
Historia
Un lenguaje patrn gua a un diseador al proporcionar soluciones viables a los problemas conocidos que surgen durante el diseo. Este conocimiento se codifica en patrones que se suelen describir usando la misma estructura: descripcin del problema, resumen de circunstancias que crean el problema y una solucin que funciona en tales circunstancias. Los patrones se interconectan e influyen entre si. Un patrn escrito incluye estas conexiones como prlogo y eplogo.
Historia
Ward y Kent identifican cinco patrones relacionados con el diseo de interfaces de usuario en Smalltalk: 1. Window Per Task. 2. Few Panes Per Window. 3. Standard Panes. 4. Short Menus. 5. Nouns and verbs
Historia
Usando los patrones de Ward y Kent un grupo de usuarios es capaz de disear sus propias interfaces grficas de usuario. Nuestro xito inicial usando un lenguaje patrn para disear la interfaz grfica de usuario nos ha dejado entusiasmados con las posibilidades para que los usuarios de computadores diseen y programen sus propias aplicaciones, sealaban Ward y Kent.
Historia
James Coplien haba catalogado patrones especficos para el lenguaje C++ a los que denomin idiomas. Los manuscritos de su libro (1989) fueron usados para ensear objetos y C++ en AT&T, Addison-Wesley publicara el libro en septiembre de 1991. Peter Coad, quien tambin haba estado explorando los patrones, anotaba: OOA y OOD tienen como bloques de construccin las clases y los objetos. Estas clases y objetos forman patrones con relaciones especficas entre ellos. Grupos de clases en un entorno orientado a objetos son tiles repetidamente. Muchos patrones pueden ser encontrados por prueba y error o por observacin.
Historia
A finales de los ochentas, Erich Gamma estaba reflexionando sobre el diseo orientado a objetos en ET++ como parte de su tesis doctoral. Se haba dado cuenta de que la estructuras de diseo recurrentes o patrones eran importantes, pero la pregunta era como capturarlas y comunicarlas.
Historia
En 1991, Bruce Anderson organiza el primer Hacia un manual de arquitectura en OOPSLA al que asisten practicamente todos aquellos que daran forma a los patrones de software. En 1992, Ralph Johnson tena un paper en patrones aceptado en el segundo Hacia un manual de arquitectura; Erich Gamma, Richard Helm y John Vlissides tenan el borrador de un catlogo que esperaban tener listo para ECOOP 93.
Historia
Frank Buschmann comienza a hablar sobre el catlogo de patrones que estaba desarrollando en Siemens. Kent Beck vea como su creencia de que los patrones deberan ser el principio gua del manual de arquitectura se consolidaba. En 1993, se forma el Hillside Group como un grupo dedicado a mejorar la calidad del desarrollo de software, con el patrocinio de Kent Beck y Grady Booch.
Historia
En 1994 se realiza la primera conferencia de Pattern Languages of Programs (PloP). En 1995 se publica el libro de patrones de diseo de Gang of Four (Gof). En 1996, se publica el libro Pattern Oriented Software Architecture: a System of Patterns, Frank Buschmann et al. ...
Agenda
Historia Definicin Categoras de patrones Patrones arquitectnicos Patrones de diseo Idiomas Elementos de un patrn Alexander GoF Tipos de patrones
Definicin - antecedentes
Los expertos, de muchas disciplinas, suelen reutilizar la esencia de una solucin en lugar de inventar una nueva.
Definicin - antecedentes
Lugar en la ventana.
A todos nos gustan aquellos lugares en las ventanas. Grandes ventanas con umbrales bajos y sillas confortables nos atraen. Un espacio que no cuente con un lugar as raras veces permite que alguien se sienta cmodo. Si un espacio no tiene ninguna ventana, una persona all estar entre dos fuerzas: estar cmodamente sentada y cerca a la luz. Obviamente, si los lugares cmodos (aquellos en la sala dnde ms le gustara sentarse) estn lejos de las ventanas, no hay forma de resolver el conflicto. Entonces: en todos los cuartos donde se pase gran parte del da, debe haber al menos un lugar en la ventana.
Definicin - antecedentes
Cada patrn es una regla de tres partes, que expresa una relacin entre: un cierto contexto,
un problema, y una solucin.
Como un elemento de lenguaje, un patrn es una instruccin, que muestra como una configuracin espacial puede ser usada, una y otra vez, para resolver el sistema de fuerzas dadas, cada vez que el contexto las haga relevantes.
Definicin
El patrn es, en resumen, al mismo tiempo algo, que pasa en el mundo, y la regla que nos dice como crear ese algo y cuando debemos crearlo. Es ambos un proceso y una cosa; una descripcin de algo que est viva, y una descripcin del proceso que generar ese algo. The Timeless Way of Building, Christopher Alexander
Definicin
Cada patrn describe un problema que ocurre una y otra vez en nuestro entorno, y luego describe el ncleo de la solucin a ese problema, de tal forma que pueda usarse la solucin muchas veces ms, sin tener que repetir el proceso ms de una vez. Christopher Alexander
Definicin
Un patrn de arquitectura de software describe un problema particular recurrente de diseo que surge en contextos especficos de diseo, y presenta un esquema genrico de solucin probado. El esquema de solucin se especifica describiendo sus componentes constituyentes, sus responsabilidades y relaciones, y las formas en que colaboran. POSA
Definicin
Una idea que ha sido til en un contexto prctico y probablemente lo ser en otros. Martin Fowler, Anaylisis Patters: Reusable Object Models, Addison Wesley
Definicin
Un patrn describe un problema recurrente que ocurre en un contexto dado y, basado en un conjunto de fuerzas gua, recomienda una solucin. La solucin es usualmente un mecanismo simple, una colaboracin entre dos o ms clases, objetos, servicios, procesos, hilos, componentes, o nodos que trabajan juntos para resolver el problema identificado en el patrn. Enterprise Solution Patters Using Microsoft .Net, versin 2.0, Thowbridge David et all, 2003
Agenda
Historia Definicin Categoras de patrones Patrones arquitectnicos Patrones de diseo Idiomas Elementos de un patrn Alexander GoF Tipos de patrones
Categoras de patrones
Los patrones se pueden organizar jerrquicamente (una de las ms usadas tcnica de abstraccin) de muchas formas, una de ellas es la propuesta por POSA: Patrones de arquitectura Patrones de diseo Idiomas
Un patrn arquitectnico expresa un esquema de organizacin estructural bsico para sistemas de software. Proporciona un conjunto de subsistemas predefinidos, especifica sus responsabilidades, e incluye reglas y guas para la organizacin de las relaciones entre ellos. Los patrones de arquitectura describen como estructurar una aplicacin al ms alto nivel.
Un patrn de diseo proporciona un esquema para refinar los subsistemas o componentes de un sistema de software, o las relaciones entre ellos. Describe una estructura comnmente recurrente de componentes que se comunican para solucionar un problema de diseo general en un un contexto particular. GoF. Los patrones de diseos proporcionan el siguiente nivel de refinamiento.
Los idiomas son patrones de bajo nivel que dependen de las tecnologas de implementacin especficas como el lenguaje de programacin. Son tambin los patrones de software ms antiguos publicados aunque en sus primeras etapas no tenan al forma de un patrn.
Agenda
Historia Definicin Categoras de patrones Patrones arquitectnicos Patrones de diseo Idiomas Elementos de un patrn Alexander GoF Tipos de patrones
Elementos de un patrn
Al documentar un patrn se describe el contexto en el que el patrn es utilizado, las fuerzas en el contexto que el patrn busca resolver, y la solucin sugerida. Cada autor tiende a utilizar su propia forma para documentar los patrones; sin embargo se reconocen las siguientes: Alexander, GoF, Portland, Coplien, POSA, entre otras.
Nombre del patrn y clasificacin: un nombre descriptivo y nico que ayuda a identificar y referenciar el patrn. Intencin: una descripcin de la meta del patrn y la razn para usarlo. Tambin conocido como: otros nombres del patrn.
Motivacin (fuerzas): un escenario consistente de un problema y un contexto en el cual el patrn puede ser usado. Aplicabilidad: situaciones en las que el patrn se puede usar; el contexto para el patrn. Estructura: una representacin grfica del patrn. Normalmente mediante diagramas de clase e interaccin. Participantes: una lista de las clases y objetos usados en el patrn y sus roles en el diseo.
Colaboracin: una descripcin de cmo las clases y objetos usados en el patrn interactan con cada otra. Consecuencias: una descripcin de los resultados, efectos laterales y confrontaciones causadas por el uso del patrn. Implementacin: una descripcin de una implementacin del patrn. Cdigo de ejemplo: una ilustracin de como puede ser usado el patrn en un lenguaje de programacin.
Usos conocidos: Ejemplos de usos reales del patrn. Patrones relacionados: otros patrones que tienen alguna relacin con el patrn; discutiendo las diferencias entre ellos.
Problema Contexto Fuerzas Solucin Contexto resultante Racionalidad Ejemplo en http://users.rcn.com/jcoplien/Patterns/PLoP95_teleco m.html
Dinmica Implementacin Ejemplo resuelto Variantes Usos conocidos Consecuencias Ver tambin.
Agenda
Historia Definicin Categoras de patrones Patrones arquitectnicos Patrones de diseo Idiomas Elementos de un patrn Alexander GoF Tipos de patrones
Tipos de patrones
Tambin hay varias aproximaciones a la clasificacin de los patrones: GoF Propsito Creational Structural Behavioural Alcance Clase Objeto
Principios estructurales
Granularidad
Catlogos PoSa
Catlogos de Arquitectura de Software Orientada a Patrones:
Pattern-Oriented Software Architecture: A System of Patterns. Publicado en 1996, persenta la progresin y la evolucin de la aproximacin de patrones en un sistema de patrones capaz de describir y documentar aplicacin de gran escala. Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, Volume 2. Publicado en el 2000. Son 17 patrones que constituyen las bases asociadas con la concurrencia y el trabajo en red.
Bibliografa
Core J2EE Patterns: Best Practices and Design Strategies, 2nd. ed., Alur Deepak, Crupi John, Malks Dan, Prentice Hall, 2003 Design Patterns: Elements of Reusable ObjectOriented Software, Gamma Erich, Helm Richard, Johnson Ralph, Vlissides John, Addison Wesley, 1995 Enterprise Solution Patters Using Microsoft .Net, versin 2.0, Thowbridge David et all, 2003 Object-oriented patterns, Coad Peter, Association for Computing Machinery Inc. 1992.
Bibliografa
Pattern Oriented Software Architecture: A System of Patterns, Volume One, Buschmann Frank, Meunier Regine, Rohnert Hans, Sommerlad Peter, Stal Michael, Wiley, 1996 Software Design Patterns: Common Questions and Answers. Coplien James O., Software Production Research Department, AT&T Bell Laboratories Software Patterns, Coplien James O., The Hillside Group, http://pclc.pace.edu/~bergin/dcs/SoftwarePatterns_Coplien. pdf