De dónde viene la palabra “patrón” aplicada al software (sí, otra herencia de la arquitectura)

A finales de los 70 aparecieron dos libros escritos por un tal Christopher Alexander acerca del planeamiento urbano y la construcción de edificios. The timeless Way of Building (Alexander, 1979) y A Pattern Language (Alexander, 1977) que presentaban la particular visión del autor sobre los problemas recurrentes que existían en la arquitectura de pueblos y ciudades, y, en general, en cualquier tipo de construcción.
Alexander describió estos problemas y sus soluciones usando una expresión llamada patrón: “Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, describiendo 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 dos veces de la misma forma” (Alexander, 1977).

Ward Cunningham y Kent Beck lo aplican al software…

Después de examinar el campo de la construcción y el trabajo de Alexander, hubo quien (concretamente Ward Cunningham y Kent Beck, sí, los conocidos ahora por la agilidad) encontró problemas y aplicación similar del concepto patrón al software, donde existe una clara evidencia de los patrones en todos los niveles de diseño, desde arquitecturas de alto nivel a problemas de diseño detallado.
En 1987 Ward Cunningham y Kent Beck trabajaban con Smalltalk, en el diseño de interfaces de usuario y decidieron usar algunas de las ideas de Alexander, desarrollando un pequeño lenguaje con cinco patrones que guiase a los programadores noveles en Smalltalk.

La OOPSLA, siempre, lugar mítico donde se presentó Scrum, XP… y los patrones

Aquel trabajo lo presentaron en la conferencia OOPSLA’87 (seguro que te acuerdas de aquello que te contaba de OOPSLA, de donde salieron “cosas” como Scrum, los patrones, el rational rose, el TDD, etc., la conferencia mítica), bajo el título “Using Pattern Languages for Object Oriented Programs”.
Poco tiempo después, en 1991, Jim Coplien (al que pude entrevistar para este blog, entrevista a Jim Coplien (1/2), sobre agilidad y patrones) comienzó a recopilar un catálogo de patrones de bajo nivel (Idioms) para C++

The gang of four

Entre 1990 y 1992 varios miembros de la “Banda de los Cuatro” (conocida por sus siglas en inglés GoF, Gang of Four)[1] se reúnen y comienzan a catalogar patrones. Y en la OOPSLA de 1991 se disparan las discusiones sobre patrones, especialmente en el taller organizado por Bruce Andersen, en el que participaban, entre otros, Jim Coplien, Doug Lea, Desmond D’Souza, etc.

El primer artículo sobre patrones

En el 92 Coad (el de la herramienta Together, te dejo un post sobre ella Mi personal y particular historia con las métricas de calidad software. Y saca de aquí lo que pueda valerte) escribió el primer artículo sobre patrones software. Comentaba como los métodos para la creación de modelos OO tienden a enfocarse a la construcción de bloques de bajo nivel (clases y objetos), existiendo una clara similitud entre estos y los elementos base descritos por Alexander.
Durante los años 1995 y 1996 los patrones OO se consolidan en difusión y utilización, gracias a la aparición de dos libros esenciales: “Design patterns: Elements of Reusable Object Oriented Software” (Gamma et al., 1995), y “A System of Patterns: Pattern-Oriented Software Architecture” (Buschmann et al., 1996).
En los últimos años los patrones crecen en aceptación, extendiéndose a otras muchas áreas dentro de la construcción y el mantenimiento de sistemas software (entornos web, tiempo real, etc. como se detalla en secciones posteriores). Su utilización, si bien aún le queda mucho camino por recorrer, comienza a tener suficiente madurez, así como la incorporación de esta disciplina al soporte automatizado.
Así que sí, otra herencia (en este caso positiva) de pensar que fabricar software es lo mismo que fabricar coches o construir casas
[1] Grupo formado por E. Gamma, R. Helm, R. Johnson, y J. Vlissides, creadores del más famoso catálogo de patrones (Gamma et al., 1995)

0 comentarios en “De dónde viene la palabra “patrón” aplicada al software (sí, otra herencia de la arquitectura)”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share This
Ir arriba