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 se puede utilizar de muchas maneras dentro de un campo específico de especialización. 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 aporta vitalidad a un campo particular de la actividad humana, a través de un conjunto de patrones interconectados. La vitalidad es un término que se usa para designar "la cualidad que no tiene nombre": una sensación de totalidad, espíritu o gracia que, si bien tiene formas variables, es precisa y verificable empíricamente. [1] Alexander afirma que la gente común 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 informático o una lámpara), debe tomar muchas decisiones sobre cómo resolver problemas. Un problema individual se documenta con su lugar típico (la sintaxis ) y su uso (la gramática ) con la solución más común y reconocida que se encuentra en la práctica, como los ejemplos que se ven en los diccionarios . Cada una de esas entradas es un patrón de diseño individual . Cada patrón tiene un nombre, una entrada descriptiva y algunas referencias cruzadas, de forma muy similar a una entrada de diccionario. Un patrón documentado debe 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 que se encuentren 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. Los patrones pueden inventarse o encontrarse y estudiarse, como los patrones de diseño que ocurren naturalmente y que caracterizan los entornos humanos. [2]

Como todos los lenguajes, un lenguaje de patrones tiene vocabulario , sintaxis y gramática , pero se aplica a alguna actividad compleja que no sea la comunicación. En los lenguajes de patrones para el 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 entiendan y trabajar hacia las partes desconocidas. Al mismo tiempo, si el lenguaje de patrones ha funcionado bien para muchos proyectos, hay razones para creer que incluso un diseñador que no entienda completamente el problema de diseño al principio completará el proceso de diseño y el resultado será utilizable. Por ejemplo, los esquiadores que entran al interior deben quitarse la nieve y guardar el equipo. La nieve sucia y los limpiadores de botas deben quedarse afuera. El equipo necesita cuidado, por lo que los estantes deben estar dentro.

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 orden de posición y 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 nuevos problemas más pequeños que resultan de la solución más grande. Ocasionalmente, los problemas más pequeños no tienen solución y se debe seleccionar una solución más grande diferente. Finalmente, todos los problemas de diseño restantes son lo suficientemente pequeños o lo suficientemente rutinarios como para que los constructores los resuelvan mediante improvisación, y el "diseño" está hecho.

La estructura organizativa real ( jerárquica , iterativa , etc.) queda a criterio del diseñador, según el 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 más grande. En este punto, el diseño casi siempre se convierte en un mejor diseño.

En el lenguaje, por lo tanto, cada patrón debe indicar sus relaciones con otros patrones y con el lenguaje en su conjunto, lo que proporciona 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 que un experto externo aplique un lenguaje de patrones es, de hecho, obtener una lista completa y fiable de los problemas que se deben resolver. Por supuesto, las personas que están más familiarizadas con los problemas son las que necesitan un diseño. Por eso, Alexander abogó por la improvisación in situ por parte de usuarios interesados ​​y empoderados [3] [4] como una forma 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 sistemas futuros. 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 lo suficientemente específica como para brindar una guía constructiva.

El conjunto de situaciones en las que se aplican los problemas y las soluciones que se abordan en un patrón se denomina contexto. Una parte importante de cada patrón es describir este contexto. Los ejemplos pueden ilustrar mejor 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 de un consultorio, aunque sigue proponiendo 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.

De todos modos, los problemas y las soluciones que se describen en un patrón pueden variar en su nivel de abstracción y generalidad por un lado, y en su especificidad por el otro. Al final, esto depende de las preferencias del autor. Sin embargo, incluso un patrón muy abstracto normalmente contendrá ejemplos que son, por naturaleza, absolutamente concretos y específicos.

Los patrones también pueden variar en cuanto a su grado de comprobación en el mundo real. Alexander otorga a cada patrón una calificación de cero, una o dos estrellas, indicando su grado de comprobación en ejemplos del mundo real. En general, se afirma que todos los patrones necesitan al menos algunos ejemplos existentes en el mundo real. Sin embargo, es concebible documentar ideas aún no implementadas en un formato similar al de un patrón.

Los patrones del libro de Alexander también varían en cuanto a su nivel de escala: algunos describen cómo construir una ciudad o un barrio, otros tratan sobre edificios individuales y el interior de habitaciones. Alexander considera los artefactos de pequeña escala como elementos constructivos del mundo a gran escala, de modo 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 entre diferentes intereses o "fuerzas". De ahí surge un patrón de diálogo que ayudará a equilibrar las fuerzas y, finalmente, a 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 los vaqueros) no debería interferir con otras actividades.

Aunque no son muy específicas en su contexto, las fuerzas del patrón "ACTIVIDAD SECUNDARIA" son muy similares a las del patrón "TELÉFONO INALÁMBRICO". Por lo 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

Normalmente, un patrón contiene una justificación que hace referencia a unos valores determinados. Para Christopher Alexander, lo más importante es pensar en las personas que entrarán en contacto con una pieza de arquitectura. Uno de sus valores clave es hacer que estas personas se sientan más vivas. Habla de la "calidad sin nombre" (QWAN, por sus siglas en inglés).

En términos más generales, podríamos decir que un buen sistema debería ser aceptado, bienvenido y felizmente adoptado como un enriquecimiento de la vida diaria por quienes están destinados a usarlo o, mejor aún, por todas las personas a las que afecta. Por ejemplo, al hablar de un café en la calle, Alexander habla de los posibles deseos de un cliente, pero también menciona a las personas que pasan por allí.

El mismo razonamiento 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 informático. Las cualidades de un sistema de software, por ejemplo, se podrían evaluar observando si los usuarios pasan su tiempo disfrutando o teniendo dificultades con el sistema.

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

Estructura y diseño genéricos

Generalmente, el autor de un lenguaje o colección de patrones elige una estructura genérica para todos los patrones que contiene, dividiéndolos en secciones genéricas como contexto, enunciado 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 sensibilizadora, la descripción del contexto, el enunciado del problema, una parte más larga del texto con ejemplos y explicaciones, un enunciado de la solución, un esquema y referencias adicionales. Esta estructura y disposición a veces se denomina "forma alejandrina".

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

Nombres con significado

Cuando el diseño lo realiza un equipo, los nombres de los patrones forman un vocabulario que pueden compartir. Esto hace que sea necesario que los nombres de los patrones sean fáciles de recordar y muy descriptivos. Algunos ejemplos de los trabajos de Alexander son WINDOW PLACE (ayuda a definir dónde deben ir las ventanas en una habitación) y A PLACE TO WAIT (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 patrones)

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, el diseñador se ve obligado a recurrir a otros patrones que se consideran útiles en su contexto.

En el libro de Alexander, estos vínculos se recogen en la parte de "referencias" y se reflejan en la parte de "contexto" del patrón vinculado; por lo tanto, la estructura general es un gráfico dirigido . Un patrón que está vinculado 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 ESCALERAS".

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

Los vínculos que aparecen en el libro de Alexander dan como resultado claramente una red jerárquica. Alexander traza un paralelo con la jerarquía de una gramática, lo que constituye un argumento para hablar de un lenguaje de patrones .

La idea de vincular patrones es generalmente aceptada entre los autores de patrones, aunque la lógica semántica detrás de los vínculos puede variar. Sin embargo, algunos autores, como Gamma et al. en Design Patterns , hacen un uso limitado 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 en lugar de un lenguaje de patrones . [5]

Uso

Alexander animó a las personas que utilizaban su sistema a ampliar su lenguaje con patrones propios. Para ello, sus libros no se centran estrictamente en la arquitectura o la 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 publicara en forma de carpeta de tres anillos, de modo que se pudieran añadir páginas 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 los patrones arquitectónicos , los patrones de informática , los patrones de diseño de interacción , los patrones pedagógicos , la jardinería de patrones , los patrones de acción social y los 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 diversas personas y comunidades 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 sus libros son referenciados por expertos en campos no relacionados.

Es importante señalar que las notaciones como UML o la colección de símbolos de diagramas de flujo no son lenguajes de patrones. Se podrían comparar más con un alfabeto: sus símbolos se podrían utilizar 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 único 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 sencillo de un patrón

Origen

Christopher Alexander , arquitecto y autor, acuñó el término lenguaje de patrones. [3] Lo utilizó para referirse a problemas comunes del diseño y la 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 deberían estructurarse las ciudades y los pueblos hasta dónde deberían colocarse 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 en el Centro de Estructura Ambiental en Berkeley, California, a fines de la década de 1970. Si bien 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 más sobre 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 de un contexto de construcción, que describe una de las configuraciones que dan vida a un edificio. Cada patrón describe un problema que se produce una y otra vez en nuestro entorno y luego describe la solución central a ese problema, de tal manera que se puede utilizar la solución un millón de veces, sin tener que hacerlo dos veces de la misma manera". [3]

Un lenguaje de patrones es una red de patrones que se invocan entre sí. Los patrones nos ayudan a recordar ideas y conocimientos sobre 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 fuertemente 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, de manera más general, patrones arquitectónicos en informática , así como patrones de diseño de interacción . Desde finales de la década de 1990, los patrones pedagógicos se han utilizado para documentar buenas prácticas en la enseñanza. [8] Desde al menos mediados de la década de 2000, la idea del lenguaje de patrones se introdujo en el diseño de arquitectura de sistemas [9] [10] y 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 utilizar la información y la comunicación con el fin de 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 "Group Works: A Pattern Language for Bringing Life to Meetings and Other Gatherings" 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 en el que sostenía que existen relaciones profundas entre los wikis y los lenguajes de patrones, y que los wikis "de hecho se desarrollaron como herramientas para facilitar el intercambio y la modificación eficiente de patrones". [16]

Véase también

Referencias

  1. ^ Alexander, Christopher (1979). La forma intemporal de construir . Oxford University Press. ISBN 978-0-19-502402-9.
  2. ^ Henshaw, J. Patrones guía del diseño natural: elementos. Actas de PURPLSOC 2015, 3-5 de julio de 2015 Krems, Austria Reunión de PURPLSOC sobre las numerosas preguntas científicas abiertas, por ejemplo, con respecto a 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 Alexander, Christopher (1977). Un lenguaje de patrones: ciudades, edificios, construcción . Oxford University Press , EE. UU., pág. 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". 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 una discusión más amplia sobre la motivación y la justificación, así como ejemplos y experimentos, véase: Schuler, Douglas. "Elegir el éxito: los lenguajes de patrones como facilitadores críticos de la inteligencia cívica" (PDF) . publicsphereproject.org . Portland Urban Architecture Research Laboratory Conference, 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". Journal of Computers in Mathematics and Science Teaching . 18 (3): 331–348.
  9. ^ Cloutier, Robert J.; Verma, Dinesh (junio de 2007). "Aplicación del 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.; Muller, Gerrit; Verma, Dinesh; Nilchiani, Roshanak; Hole, 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 en ciencias del diseño, Auerbach Publications, octubre de 2007, 248 páginas
  12. ^ Vaishnavi. VK y Kuechler, W. Métodos y patrones de investigación en ciencia del diseño, 2.ª edición, CRC Press, 2015, 415 páginas
  13. ^ "Liberating Voices Pattern Language". 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 para jardines forestales". Jardines forestales comestibles, volumen II: Diseño ecológico y práctica para la permacultura en climas templados . White River Junction, VT: Chelsea Green Publishing . págs. 63–139. ISBN 1-931498-80-6.
  16. ^ Cunningham, Ward ; Mehaffy, Michael W. (2013). "Wiki como lenguaje de patrones". Actas de la 20.ª Conferencia sobre lenguajes de patrones de programas, 23-26 de octubre de 2013, Monticello, Illinois . PLoP '13. Corryton, TN: The Hillside Group . págs. 32:1–32:14. ISBN 9781941652008.

Lectura adicional

Enlaces externos

Acerca de los patrones en general

Colecciones de patrones en línea