2.7. PROBLEMAS Y LIMITACIONES DE LOS PATRONES

A pesar de todas las bondades de los patrones, en su uso diario se ponen de manifiesto una serie de problemas y limitaciones que hay que tener en cuenta para que su adopción sea lo más fructífera posible.

El éxito de los patrones de diseño como técnica para capturar el conocimiento de diseño de una determinada área ha provocado que surjan una gran cantidad de patrones, a veces sin el consenso de la propia comunidad a la que va dirigida.  Esta situación provoca una serie de problemas. Potencialmente, hay muchos patrones disponibles, la gran mayoría de ellos a través de diferentes publicaciones (libros y artículos). Un número de ellos puede superficialmente ajustarse a las necesidades del diseñador. Incluso si están disponibles a través de algún sitio web, es necesario realizar una búsqueda manual para identificar el patrón que mejor se ajusta a las necesidades del problema.

Una vez encontrado el patrón, nos encontramos con el siguiente obstáculo. Los patrones de diseño son difíciles de aplicar si no hemos entendido en profundidad el dominio del problema. Por ejemplo, frecuentemente se tienen dificultades en determinar cómo, cuándo y dónde tienen que ser aplicados los patrones de diseño. Esto se debe a que la solución que describe el patrón no está detallada al nivel de implementación, sino que proporciona una descripción abstracta, una enumeración de elementos y sus relaciones para solucionar el problema planteado.  Finalmente, es posible que sean necesarios otros patrones para completar la solución, por lo que los anteriores pasos deberán repetirse. A estas dificultades hay que añadir que el uso de los patrones no está soportado metodológicamente, salvo en algún dominio concreto como es el IPO, por lo cual al comienzo tienen una alta curva de aprendizaje, que puede llevar a su abandono. Pero una vez superado este punto, la curva de experiencia puede ser óptima, ya que una de las cualidades de los patrones es “aprender haciendo” a partir de la experiencia de otros, dando como resultado diseños y aplicaciones  mucho más flexibles, modulares y reutilizables.

Estos hechos pueden verse agravados cuando encontramos patrones con diferentes nombres que abordan el mismo problema o el estilo literario utilizado por el autor es ambiguo o difícil de comprender por los diseñadores, o los patrones tienen diferentes formatos. Esto se refleja en patrones poco maduros, que no han sido suficientemente validados por la experiencia y suelen pertenecer a dominios que están todavía emergiendo. Documentar buenos patrones puede ser una tarea extremadamente difícil.

Un buen patrón debe tener las siguientes características (Coplien, 1998):

  • Resolver un problema: Los patrones capturan soluciones, no sólo principios abstractos o estrategias.
  • Ser un concepto probado: Los patrones capturan soluciones con un registro de los pasos a llevar a cabo, no teorías o especulaciones.
  • La solución propuesta no es obvia: Muchas técnicas de resolución de problemas intentan derivar la solución a partir de principios. Los mejores patrones generan una solución a un problema de manera indirecta, una aproximación necesaria para los problemas más difíciles de diseño.
  • Describir una relación: Los patrones no sólo describen módulos, sino estructuras y mecanismos del sistema en detalle.
  • Tener un componente humano significativo, minimizando así su intervención: El software sirve a la comodidad humana o a la calidad de vida; los mejores patrones explícitamente apelan a la estética y a la utilidad.
  • En la siguiente sección daremos una serie de recomendaciones sobre cómo superar o evitar los problemas aquí expuestos.


retroceder avanzar