2.4. CATÁLOGOS Y LENGUAJES DE PATRONES

Con el crecimiento del número de patrones relacionados con un determinado dominio de diseño, la acumulación de información evoluciona hacia una masa carente de estructura y significado, que hace que el diseñador se vea incapaz de navegar por ella para encontrar las soluciones que necesita. Asimismo, al tratar de resolver un problema complejo que requiere la aplicación sucesiva de varios patrones, el diseñador novato se puede sentir abrumado ante la tarea de escudriñar todo el conjunto de patrones y cribar aquello que realmente necesita. Los patrones recogen conocimiento, pero puesto que este conocimiento está interrelacionado, es preciso organizarlo de alguna forma que sea significativa para el diseñador. Habitualmente los patrones se han organizado en catálogos y lenguajes para conseguir un uso más efectivo. El objetivo de estas herramientas es encauzar los esfuerzos del diseñador a la hora de encontrar el patrón o patrones que mejor se adapten a las necesidades del problema que está tratando de resolver.

2.4.1. Catálogo de patrones

Un catálogo es un grupo de patrones clasificados por uno o más criterios y relacionados entre sí, los cuales pueden ser utilizados de forma conjunta o independiente. Estos criterios permiten organizar los patrones en grupos que comparten el mismo conjunto de propiedades, y dependiendo de los criterios elegidos se pueden definir esquemas de clasificación con diferentes dimensiones. Los esquemas de clasificación ponen de manifiesto las principales cualidades de los patrones y ayudan a reducir el tamaño del espacio de búsqueda.

En la literatura se pueden encontrar los siguientes criterios utilizados para clasificar diferentes tipos de patrones (Kardell, 1997):

  • Por su dominio. Dentro del campo de la ingeniería del software, los patrones no están restringidos a resolver problemas de diseño o de arquitectura software. Considerando el problema del diseño, se han propuesto gran cantidad de patrones en diferentes áreas, como pueden ser los de sistemas distribuidos, concurrentes o paralelos (Schmith et al., 2000) o colaborativos (Guerrero y Fuller, 2001).
  • Por su paradigma. Cada paradigma tiene sus propios patrones. Un patrón de diseño imperativo (uno de los paradigmas de la programación) podría dirigir un problema similar que un patrón de diseño orientado a objetos, pero la solución se describiría en términos de cada paradigma. Un ejemplo de este tipo sería el patrón Decorator (Gamma et al., 1994) que es presentado según el paradigma de la orientación a objetos y el patrón Navigational Context (Rossi et al., 1997) que es el mismo patrón pero adaptado al paradigma del hipertexto.
  • Por su granularidad. Los patrones también pueden ser clasificados dependiendo del nivel al cual se dirijan. La clasificación más famosa es la descrita en (Buschmann et al., 1996), donde en el nivel más bajo se encuentran los patrones específicos del lenguaje de programación, en el nivel medio se ubican los de diseño y en el nivel superior los patrones referentes a la arquitectura del sistema.
  • Por su nivel de abstracción. De una manera similar a la anterior, los patrones software se pueden clasificar en: patrones conceptuales, que son descritos mediante términos y conceptos de un dominio de aplicación específico; patrones de diseño, que describen construcciones software, complementando el espacio conceptual abierto por los patrones conceptuales; y patrones de programación, que estarían en el nivel más bajo de abstracción, cuyas soluciones son descritas mediante construcciones propias de los lenguajes de programación (Riehle y Zullighoven’s, 1996).  
  • Por su propósito. El propósito representa qué tipo de problemas resuelve el patrón. Este criterio fue usado inicialmente por Gamma et al. (1994), quienes establecieron las siguientes categorías: creación, estructurales y de comportamiento.
  • Por su alcance. Dentro de un mismo paradigma y usando el mismo entorno de desarrollo, los patrones pueden ser clasificados según el espacio del entorno en el que se aplica la solución del patrón. En el paradigma de la orientación a objetos, por ejemplo, el patrón puede ser aplicado a una clase o a un objeto (Gamma et al., 1994).
  • Por las relaciones entre patrones. En 1995, Zimmer examinó la naturaleza de las relaciones entre los patrones a través del campo “Patrones relacionados”, centrándose en las relaciones entre los aspectos del problema y la solución, dando lugar a tres tipos de relación: el patrón X usa el patrón Y en su solución, el patrón X es similar al patrón Y, y el patrón X puede ser combinado con el patrón Y. Posteriormente, viendo que la relación más predominante era “X usa Y”, los patrones fueron organizados en niveles de uso, como se ve en la figura 2.4.1.a.

retroceder avanzar