Introducción al Lenguaje de Patrón


Christopher Alexander VienaAustria) es un arquitecto, reconocido por sus diseños destacados de edificios en CaliforniaJapón y México.
Partiendo de la 
premisa de que los usuarios de los espacios arquitectónicos saben más que los arquitectos sobre el tipo de edificios que necesitan, creó y validó (junto a Sarah Ishikawa y Murray Silverstein) el término lenguaje de patrón, un método estructurado que pone la arquitectura al alcance de personas no especializadas profesionalmente en la materia, y que popularizó en su libro A Pattern Language.
Su uso iba desde la forma de estructurar una ciudad a como debían disponerse las ventanas en una habitación.

Los lenguajes de patrón se utilizan para formalizar los valores de decisiones cuya efectividad resulta obvia a través de la experiencia, pero que es difícil de documentar y pasar a los aprendices. También son herramientas útiles a la hora de estructurar el conocimiento y comprender sistemas complejos sin caer en la simplificación extrema.
Alexander da la siguiente definición de patrón:
"Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada más de un millón de veces sin hacerlo ni siquiera dos veces de la misma forma."

El autor, animó a la gente que usaba su sistema a expandirlo con patrones que los usuarios creasen, por ello sus libros no se centran de forma estricta en arquitectura o en ingeniería civil. También habla del método general de los lenguajes de patrón.
De esta forma, sus métodos se han usado para documentar el conocimiento experimental en diversos campos, como los patrones informáticos que se usan en ingeniería de software, patrones de diseño de interacción en Interacción del hombre con la computadora y patrones pedagógicos en educación. 

El su libro The Timeless Way of Building describe qué significa para él lenguaje de patrón y cómo se aplica al diseño de edificios y ciudades.
Sin embargo, este sistema es aplicable a cualquier otro campo del diseño.

En diseño, un lenguaje de patrón es un método estructurado para describir una serie de buenas prácticas de diseño en un área particular.
Se caracteriza por: 
  • Descubrir y nombrar los problemas más comunes en el campo de interés.
  • Describir las características principales de las soluciones efectivas para llegar al objetivo marcado.
  • Ayudar al diseñador a moverse de un problema a otro de una forma lógica.
  • Permitir diferentes caminos en un mismo proceso de diseño.

Resumiendo, los patrones de diseño son aquellos que expresan esquemas para definir estructuras de diseño (o sus relaciones) con las que construir sistemas de software.

Ahora bien, ¿cómo establecer estos patrones?
De acuerdo con el Alexander, un patrón individual debe describirse en 3 partes:
  • "Contexto" - ¿Bajo qué condiciones resolverá  el problema esta solución?
  • "Sistema de fuerzas" - Se puede considerar como el problema o el objetivo
  • "Solución" - Una configuración que pone las fuerzas en equilibrio o resuelve el problema presentado 
Contexto ->Sistema de fuerzas -> Solución


Así, una entrada en un lenguaje de patrón debería tener un nombre sencillo, una descripción concisa del problema, una solución clara, y suficiente información para ayudar al lector a entender cuando aplicar esta solución.
También debería mostrar qué patrones deben tenerse en consideración de ante mano, y que patrones se deberían considerar más adelante.


Para que una solución sea considerada un patrón debe poseer ciertas características:
  • Debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. 
  • Debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

¿Cuáles son los objetivos de los patrones, o de su aplicación?
  • Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
  • Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
  • Formalizar un vocabulario común entre diseñadores.
  • Estandarizar el modo en que se realiza el diseño.
  • Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.
Pero, hay que tener criterio, ya que los patrones no pretenden (ni deberían) imponer ciertas alternativas de diseño frente a otras o eliminar la creatividad inherente al proceso de diseño.
Abusar o forzar el uso de los patrones puede ser un error.

Para describir un patrón se usan plantillas más o menos estandarizadas, de forma que se expresen uniformemente y puedan constituir efectivamente un medio de comunicación uniforme entre diseñadores, en esta área  se han propuesto plantillas ligeramente distintas, si bien la mayoría definen los mismos conceptos básicos.

La plantilla más común es la utilizada  por el GoF y consta de los siguientes apartados:

  • Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés).
  • Clasificación del patrón: creacional, estructural o de comportamiento.
  • Intención: ¿Qué problema pretende resolver el patrón?
  • También conocido como: Otros nombres de uso común para el patrón.
  • Motivación: Escenario de ejemplo para la aplicación del patrón.
  • Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.
  • Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.
  • Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón.
  • Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.
  • Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón.
  • Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón.
  • Código de ejemplo: Código fuente ejemplo de implementación del patrón.
  • Usos conocidos: Ejemplos de sistemas reales que usan el patrón.
  • Patrones relacionados: Referencias cruzadas con otros patrones.
Patrones de interacción
El primer intento por aplicar este concepto en el diseño de las interfaces de usuario se dio por Ward Cummingham y Kent Beck quienes adaptaron la propuesta de C. Alexander y crearon cinco patrones de interfaz: 

  • ventana por tarea
  • pocos paneles
  • paneles standard
  • Los sustantivos y verbos
  • Menú Corto

En años más recientes investigadores como Martin Van Welie, Jennifer Tidwell han desarrollado colecciones de patrones de interacción para la World Wide Web.

Los patrones de interacción buscan la reutilización de interfaces eficaces y un manejo óptimo de los recursos de las páginas web, haciendo más eficaz el consumo de tiempo en el diseño del sitio web y permitiendo a los programadores novatos adquirir más experiencia.

Este texto de Pedro J. Molina, proporciona un análisis de un caso de estudio, que es aunque en ciertos puntos relativamente técnico, muy ilustrativo.

Existen también numerosos antipatrones, en diferentes niveles, de diseño, de gestión, de desarrollo, que causan muchas de las dificultades a las que nos enfrentamos cada día, como creadores y como usuarios. Pero merecen un apartado aparte.

Magical Mystery Tour

No hay comentarios.:

Publicar un comentario