stringtranslate.com

Lenguaje de patrones

Un lenguaje de patrones es un conjunto organizado y coherente de patrones , cada uno de los cuales describe un problema y el núcleo de una solución que puede usarse de muchas maneras dentro de un campo de especialización específico. El término fue acuñado por el arquitecto Christopher Alexander y popularizado por su libro de 1977 A Pattern Language .

Un lenguaje de patrones también puede ser un intento de expresar la sabiduría más profunda de lo que da vida a un campo particular del esfuerzo humano, a través de un conjunto de patrones interconectados. La vitalidad es un término reservado para "la cualidad que no tiene nombre": una sensación de plenitud, espíritu o gracia, que, si bien tiene diferentes formas, es precisa y empíricamente verificable. [1] Alexander afirma que la gente corriente puede utilizar este enfoque de diseño para resolver con éxito problemas de diseño muy grandes y complejos.

¿Qué es un patrón?

Cuando un diseñador diseña algo (ya sea una casa, un programa de computadora o una lámpara), debe tomar muchas decisiones sobre cómo resolver los problemas. Un solo problema se documenta con su lugar típico (la sintaxis ) y su uso (la gramática ) con la buena solución más común y reconocida que se ve en la naturaleza, como los ejemplos que se ven en los diccionarios . Cada una de estas entradas es un patrón de diseño único . Cada patrón tiene un nombre, una entrada descriptiva y algunas referencias cruzadas, muy parecido a una entrada de diccionario. Un patrón documentado debería explicar por qué esa solución es buena en los contextos del patrón.

Los patrones elementales o universales como "puerta" o "asociación" son ideales versátiles de diseño, ya sea tal como se encuentran en la experiencia o para su uso como componentes en la práctica, descritos explícitamente como resoluciones holísticas de las fuerzas en contextos y circunstancias recurrentes, ya sea en arquitectura, medicina, desarrollo de software o gobernanza, etc. Se pueden inventar, encontrar y estudiar patrones, como los patrones de diseño naturales que caracterizan los entornos humanos. [2]

Como todos los idiomas, un lenguaje de patrones tiene vocabulario , sintaxis y gramática , pero un lenguaje de patrones se aplica a alguna actividad compleja distinta de la comunicación. En los lenguajes de patrones para diseño, las partes se dividen de esta manera:

Esto simplifica el trabajo de diseño porque los diseñadores pueden comenzar el proceso desde cualquier parte del problema que comprendan y trabajar hacia las partes desconocidas. Al mismo tiempo, si el lenguaje de patrones ha funcionado bien en muchos proyectos, hay razones para creer que incluso un diseñador que al principio no comprenda completamente el problema de diseño completará el proceso de diseño y el resultado será utilizable. Por ejemplo, los esquiadores que entran deben quitar la nieve y guardar el equipo. Los limpiadores de nieve y botas sucios deben permanecer afuera. El equipo necesita cuidados, por lo que los bastidores deben estar en el interior.

Muchos patrones forman un lenguaje.

Así como las palabras deben tener relaciones gramaticales y semánticas entre sí para que un lenguaje hablado sea útil, los patrones de diseño deben estar relacionados entre sí en posición y orden de utilidad para formar un lenguaje de patrones. El trabajo de Christopher Alexander describe un proceso de descomposición, en el que el diseñador tiene un problema (quizás un encargo comercial), selecciona una solución y luego descubre problemas nuevos y más pequeños resultantes de la solución más amplia. En ocasiones, los problemas más pequeños no tienen solución y se debe seleccionar una solución diferente y más amplia. Al final, todos los problemas de diseño restantes son lo suficientemente pequeños o rutinarios como para que los constructores los resuelvan mediante la improvisación, y el "diseño" está hecho.

La estructura organizativa real ( jerárquica , iterativa , etc.) se deja a discreción del diseñador, dependiendo del problema. Esto permite explícitamente que un diseñador explore un diseño, comenzando desde una pequeña parte. Cuando esto sucede, es común que un diseñador se dé cuenta de que el problema es en realidad parte de una solución mayor. En este punto, el diseño casi siempre se convierte en un mejor diseño.

Por lo tanto, en el lenguaje, cada patrón tiene que indicar sus relaciones con otros patrones y con el lenguaje en su conjunto. Esto le da al diseñador que utiliza el lenguaje una gran cantidad de orientación sobre los problemas relacionados que deben resolverse.

La parte más difícil de contar con un experto externo que aplique un lenguaje de patrones es, de hecho, obtener una lista completa y confiable de los problemas a resolver. Por supuesto, las personas más familiarizadas con los problemas son las que necesitan un diseño. Entonces, Alexander defendió la improvisación en el sitio por parte de usuarios preocupados y empoderados, [3] [4] como una manera poderosa de formar soluciones iniciales a gran escala muy viables, maximizando la utilidad de un diseño y minimizando la reelaboración del diseño. El deseo de empoderar a los usuarios de la arquitectura fue, de hecho, lo que llevó a Alexander a emprender un proyecto de lenguaje de patrones para la arquitectura en primer lugar.

Problemas de diseño en un contexto.

Un aspecto importante de los patrones de diseño es identificar y documentar las ideas clave que diferencian un buen sistema de un sistema deficiente (que puede ser una casa, un programa de computadora o un objeto de uso diario), y ayudar en el diseño de patrones de diseño futuros. sistemas. La idea expresada en un patrón debe ser lo suficientemente general como para ser aplicada en sistemas muy diferentes dentro de su contexto, pero aún lo suficientemente específica como para brindar una guía constructiva.

La gama de situaciones en las que se aplican los problemas y soluciones abordados en un patrón se denomina contexto. Una parte importante en cada patrón es describir este contexto. Los ejemplos pueden ilustrar aún más cómo se aplica el patrón a situaciones muy diferentes.

Por ejemplo, el patrón de Alexander "UN LUGAR PARA ESPERAR" aborda las paradas de autobús de la misma manera que las salas de espera en una consulta, sin dejar de proponer soluciones útiles y constructivas. El libro "Gang-of-Four" Design Patterns de Gamma et al. propone soluciones que son independientes del lenguaje de programación y del dominio de aplicación del programa.

Aún así, los problemas y soluciones descritos en un patrón pueden variar en su nivel de abstracción y generalidad por un lado, y especificidad por el otro. Al final esto depende de las preferencias del autor. Sin embargo, incluso un patrón muy abstracto suele contener ejemplos que son, por naturaleza, absolutamente concretos y específicos.

Los patrones también pueden variar en cuanto a hasta qué punto están probados en el mundo real. Alexander otorga a cada patrón una calificación de cero, una o dos estrellas, lo que indica qué tan bien están probados en ejemplos del mundo real. Generalmente se afirma que todos los patrones necesitan al menos algunos ejemplos existentes del mundo real. Sin embargo, es posible documentar ideas aún no implementadas en un formato similar a un patrón.

Los patrones en el libro de Alexander también varían en su nivel de escala: algunos describen cómo construir una ciudad o un vecindario, otros tratan de edificios individuales y el interior de las habitaciones. Alexander ve los artefactos de baja escala como elementos constructivos del mundo de gran escala, por lo que pueden conectarse a una red jerárquica.

Equilibrio de fuerzas

Un patrón debe caracterizar los problemas que pretende resolver, el contexto o situación donde surgen estos problemas y las condiciones bajo las cuales se pueden recomendar las soluciones propuestas.

A menudo estos problemas surgen de un conflicto de diferentes intereses o "fuerzas". Un patrón surge como un diálogo que luego ayudará a equilibrar las fuerzas y finalmente tomar una decisión.

Por ejemplo, podría haber un patrón que sugiera un teléfono inalámbrico. Las fuerzas serían la necesidad de comunicarse y la necesidad de hacer otras cosas al mismo tiempo (cocinar, inspeccionar la estantería). Un patrón muy específico sería simplemente "TELÉFONO INALÁMBRICO". Patrones más generales serían "DISPOSITIVO INALÁMBRICO" o "ACTIVIDAD SECUNDARIA", lo que sugiere que una actividad secundaria (como hablar por teléfono o inspeccionar los bolsillos de sus jeans) no debería interferir con otras actividades.

Aunque bastante inespecíficas en su contexto, las fuerzas en el patrón "ACTIVIDAD SECUNDARIA" son muy similares a las del "TELÉFONO INALÁMBRICO". Por tanto, las fuerzas en competencia pueden verse como parte de la esencia de un concepto de diseño expresado en un patrón.

Los patrones contienen su propia lógica.

Por lo general, un patrón contiene una justificación que se refiere a algunos valores dados. Para Christopher Alexander, lo más importante es pensar en las personas que entrarán en contacto con una obra arquitectónica. Uno de sus valores clave es hacer que estas personas se sientan más vivas. Habla de la "calidad sin nombre" (QWAN).

En términos más generales, podríamos decir que un buen sistema debería ser aceptado, bienvenido y felizmente abrazado como un enriquecimiento de la vida diaria por aquellos que deben usarlo, o –mejor aún– por todas las personas a las que afecta. Por ejemplo, cuando habla de un café callejero, Alexander habla de los posibles deseos de un huésped, pero también menciona a las personas que simplemente pasan por allí.

El mismo pensamiento se puede aplicar a dispositivos técnicos como teléfonos y automóviles, a estructuras sociales como un equipo que trabaja en un proyecto o a la interfaz de usuario de un programa de computadora. Las cualidades de un sistema de software, por ejemplo, podrían evaluarse observando si los usuarios pasan su tiempo disfrutando o luchando con el sistema.

Al centrarnos en los impactos en la vida humana, podemos identificar patrones que son independientes de la tecnología cambiante y así encontrar una "calidad atemporal" (Alexander).

Estructura y diseño genéricos.

Por lo general, el autor de un lenguaje o colección de patrones elige una estructura genérica para todos los patrones que contiene, dividiendo cada uno en secciones genéricas como contexto, planteamiento del problema, solución, etc.

Los patrones de Christopher Alexander, por ejemplo, consisten cada uno en un nombre corto, una calificación (hasta dos símbolos '*'), una imagen sensibilizante, la descripción del contexto, el planteamiento del problema, una parte más larga de texto con ejemplos y explicaciones, una solución. declaración, un boceto y más referencias. Esta estructura y diseño a veces se denomina "forma alejandrina".

Alexander utiliza un diseño de texto especial para marcar las diferentes secciones de sus patrones. Por ejemplo, el enunciado del problema y el enunciado de la solución se imprimen en negrita; este último siempre va precedido de la palabra clave "Por lo tanto:". En cambio, algunos autores utilizan etiquetas explícitas, lo que crea cierto grado de redundancia.

Nombres significativos

Cuando el diseño lo realiza un equipo, los nombres de los patrones formarán un vocabulario que podrán compartir. Esto hace necesario que los nombres de los patrones sean fáciles de recordar y altamente descriptivos. Algunos ejemplos de las obras de Alexander son WINDOW LUGAR (ayuda a definir dónde deben ir las ventanas en una habitación) y A LUGAR PARA ESPERAR (ayuda a definir las características de las paradas de autobús y las salas de espera de los hospitales, por ejemplo).

Agregación en una red asociativa (lenguaje de patrón)

Un lenguaje de patrones, tal como lo concibió Alexander, contiene enlaces de un patrón a otro, por lo que cuando intenta aplicar un patrón en un proyecto, un diseñador es empujado a otros patrones que se consideran útiles en su contexto.

En el libro de Alexander, dichos vínculos se recopilan en la parte de "referencias" y se repiten en la parte de "contexto" del patrón vinculado; por lo tanto, la estructura general es un gráfico dirigido . Un patrón al que se vincula en las "referencias" generalmente aborda un problema de menor escala, que se sugiere como parte del problema de mayor escala. Por ejemplo, el patrón "SALA PÚBLICA AL AIRE LIBRE" tiene una referencia a "ASIENTOS DE ESCALERA".

Incluso sin la descripción del patrón, estos enlaces, junto con nombres significativos, transmiten un mensaje: cuando construya un lugar al aire libre donde la gente pueda pasar tiempo ("SALA PÚBLICA AL AIRE LIBRE"), considere rodearlo con escaleras donde la gente pueda sentarse ("ASIENTOS DE ESCALERA"). "). Si está planeando una oficina (“TALLERES Y OFICINAS”), considere organizar espacios de trabajo en grupos pequeños (“PEQUEÑOS GRUPOS DE TRABAJO”). Alexander sostiene que las conexiones en la red pueden considerarse incluso más significativas que el texto de los patrones mismos.

Los vínculos en el libro de Alexander claramente resultan en una red jerárquica. Alexander establece un paralelo con la jerarquía de una gramática: ese es un argumento para hablar de un lenguaje patrón .

La idea de vincular es generalmente aceptada entre los autores de patrones, aunque la lógica semántica detrás de los vínculos puede variar. Algunos autores, sin embargo, como Gamma et al. en Patrones de diseño , haga poco uso de la vinculación de patrones, posiblemente porque no tenía mucho sentido para su colección de patrones. En tal caso hablaríamos de un catálogo de patrones más que de un lenguaje de patrones . [5]

Uso

Alexander animó a las personas que utilizaron su sistema a expandir su lenguaje con patrones propios. Para permitir esto, sus libros no se centran estrictamente en arquitectura o ingeniería civil; También explica el método general de los lenguajes de patrones. El concepto original del libro A Pattern Language era que se publicaría en forma de una carpeta de tres anillas, de modo que las páginas pudieran agregarse fácilmente más adelante; esto resultó poco práctico en la publicación. [6] El enfoque del lenguaje de patrones se ha utilizado para documentar la experiencia en diversos campos. Algunos ejemplos son patrones arquitectónicos , patrones informáticos , patrones de diseño de interacción , patrones pedagógicos , patrones de jardinería , patrones de acción social y patrones de facilitación de grupos. El enfoque del lenguaje de patrones también se ha recomendado como una forma de promover la inteligencia cívica al ayudar a coordinar acciones para personas y comunidades diversas que trabajan juntas en problemas compartidos importantes. [7] Las especificaciones de Alexander para el uso de lenguajes de patrones, así como para la creación de otros nuevos, siguen siendo influyentes, y expertos en campos no relacionados hacen referencia al estilo de sus libros.

Es importante señalar que notaciones como UML o la colección de símbolos de diagramas de flujo no son lenguajes de patrones. Podrían compararse más estrechamente con un alfabeto: sus símbolos podrían usarse para documentar un lenguaje de patrones, pero no son un lenguaje en sí mismos. Una receta u otro conjunto secuencial de pasos a seguir, con un solo camino correcto de principio a fin, tampoco es un lenguaje de patrones. Sin embargo, el proceso de diseño de una nueva receta podría beneficiarse del uso de un lenguaje de patrones.

Ejemplo simple de un patrón.

Origen

Christopher Alexander , arquitecto y autor, acuñó el término lenguaje de patrones. [3] Lo usó para referirse a problemas comunes del diseño y construcción de edificios y ciudades y cómo deberían resolverse. Las soluciones propuestas en el libro incluyen sugerencias que van desde cómo se deben estructurar las ciudades y pueblos hasta dónde se deben colocar las ventanas en una habitación.

El marco y la filosofía del enfoque del "lenguaje de patrones" se popularizaron inicialmente en el libro A Pattern Language , escrito por Christopher Alexander y cinco colegas del Centro para la Estructura Ambiental de Berkeley, California, a finales de los años 1970. Mientras que A Pattern Language contiene 253 "patrones" desde el primer patrón, "Regiones Independientes" (el más general) hasta el último, "Cosas de tu vida", el libro de Alexander The Timeless Way of Building profundiza en la motivación y el propósito. del trabajo. Las siguientes definiciones de "patrón" y "lenguaje de patrones" están parafraseadas de A Pattern Language : [3]

"Un patrón es una descripción cuidadosa de una solución perenne a un problema recurrente dentro del contexto de un edificio, que describe una de las configuraciones que da vida a un edificio. Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, y luego describe la solución central a ese problema, de tal manera que puedas usar la solución un millón de veces, sin tener que hacerlo de la misma manera dos veces". [3]

Un lenguaje de patrones es una red de patrones que se invocan unos a otros. Los patrones nos ayudan a recordar ideas y conocimientos sobre el diseño y pueden usarse en combinación para crear soluciones.

Dominios de aplicación

La idea de Christopher Alexander ha sido adoptada en otras disciplinas, a menudo mucho más que la aplicación original de patrones a la arquitectura como se describe en el libro A Pattern Language . [3] Los ejemplos desde la década de 1990 incluyen patrones de diseño de software en ingeniería de software y, más generalmente, patrones arquitectónicos en ciencias de la computación , así como patrones de diseño de interacción . Desde finales de la década de 1990, se han utilizado patrones pedagógicos para documentar buenas prácticas en la enseñanza. [8] Desde al menos mediados de la década de 2000, la idea de lenguaje de patrones se introdujo en el diseño de arquitectura de sistemas [9] [10] y en los patrones de ciencia del diseño (metodología) en un libro escrito por Vijay Vaishnavi y William Kuechler con 66 patrones; [11] La segunda edición revisada y ampliada de este libro se publicó en 2015 con 84 patrones. [12] El libro Liberating Voices: A Pattern Language for Communication Revolution , que contiene 136 patrones para usar la información y la comunicación para promover la sostenibilidad, la democracia y el cambio social positivo, se publicó en 2008 junto con un sitio web que contiene aún más patrones. [13] La baraja "Trabajos grupales: un lenguaje de patrones para dar vida a reuniones y otras reuniones" se publicó en 2011. [14] La idea de un lenguaje de patrones también se ha aplicado en el diseño de permacultura . [15]

Ward Cunningham , el inventor de wiki , fue coautor de un artículo con Michael Mehaffy argumentando que existen relaciones profundas entre los wikis y los lenguajes de patrones, y que los wikis "de hecho fueron desarrollados como herramientas para facilitar el intercambio y la modificación eficiente de patrones". [dieciséis]

Ver también

Referencias

  1. ^ Alejandro, Christopher (1979). La forma atemporal de construir . Prensa de la Universidad de Oxford. ISBN 978-0-19-502402-9.
  2. ^ Henshaw, J. Patrones rectores del diseño natural: elementos. Actas de PURPLSOC 2015, 3 al 5 de julio de 2015 Krems, Austria Reunión de PURPLSOC sobre las muchas cuestiones científicas abiertas, por ejemplo, en relación con los antecedentes teóricos de los patrones y la implementación práctica de los métodos de patrones en la investigación y la enseñanza.
  3. ^ abcde Alejandro, Christopher (1977). Un lenguaje de patrones: ciudades, edificios, construcción . Prensa de la Universidad de Oxford , Estados Unidos. pag. 1216.ISBN 978-0-19-501919-3.
  4. ^ Alexander, Christopher, El Proyecto Oregón
  5. ^ Andy Dearden, Janet Finlay (enero de 2006). "Lenguajes de patrones en HCI: una revisión crítica". La interacción persona-ordenador . 21 (1).
  6. ^ Simposio del Laboratorio de Investigación de Arquitectura Urbana de Portland 2009, presentación de 4 de los 6 autores originales de A Pattern Language .
  7. ^ Para obtener más información sobre la motivación y la justificación, así como ejemplos y experimentos, consulte: Schuler, Douglas. "Elegir el éxito: lenguajes de patrones como facilitadores críticos de la inteligencia cívica" (PDF) . publicsphereproject.org . Conferencia del Laboratorio de Investigación de Arquitectura Urbana de Portland, Portland, OR, 2009 . Consultado el 6 de marzo de 2017 .
  8. ^ Fincher, Sally (septiembre de 1999). "Análisis del diseño: una exploración de patrones y lenguajes de patrones para la pedagogía". Revista de Computación en la Enseñanza de las Matemáticas y las Ciencias . 18 (3): 331–348.
  9. ^ Cloutier, Robert J.; Verma, Dinesh (junio de 2007). "Aplicar el concepto de patrones a la arquitectura de sistemas". Ingeniería de Sistemas . 10 (2): 138-154. doi :10.1002/sys.20066. S2CID  16218191.
  10. ^ Cloutier, Robert J.; Müller, Gerrit; Verma, Dinesh; Nilchiani, Roshanak; Agujero, Eirik; Bone, Mary (marzo de 2010). "El concepto de arquitecturas de referencia". Ingeniería de Sistemas . 13 (1): 14-27. doi :10.1002/sys.20129. S2CID  10835558.
  11. ^ Vaishnavi, VK y Kuechler, W. Métodos y patrones de investigación de ciencias del diseño, Publicaciones Auerbach, octubre de 2007, 248 páginas
  12. ^ Vaisnavi. VK y Kuechler, W. Design Science Research Methods and Patterns, segunda edición, CRC Press, 2015, 415 páginas
  13. ^ "Lenguaje de patrones de voces liberadoras". publicsphereproject.org . Consultado el 6 de marzo de 2017 .
  14. ^ "Proyecto de lenguaje de patrones grupales". groupworksdeck.org . Consultado el 6 de marzo de 2017 .
  15. ^ Jacke, Dave; Toensmeier, Eric (2005). "Un lenguaje de patrones de jardín forestal". Jardines forestales comestibles, Volumen II: Diseño y práctica ecológicos para la permacultura en climas templados . White River Junction, VT: Chelsea Green Publishing . págs. 63-139. ISBN 1-931498-80-6.
  16. ^ Cunningham, sala ; Mehaffy, Michael W. (2013). "Wiki como lenguaje de patrones". Actas de la vigésima conferencia sobre lenguajes patrón de programas, 23 al 26 de octubre de 2013, Monticello, Illinois . PLoP'13. Corryton, TN: El grupo Hillside . págs. 32:1–32:14. ISBN 9781941652008.

Otras lecturas

enlaces externos

Sobre patrones en general

Colecciones de patrones en línea