Una vez concluida la primera serie de entradas sobre componentes del pensamiento
computacional, he recapacitado que hay otras que igualmente podemos o debemos
tener en cuenta y que, de forma más o menos frecuente y explícita, están presentes en los
procesos de programar. De esta manera al análisis descendente, al ascendente, la heurística, el aprendizaje divergente, la creatividad, etc habría que añadir los patrones y el lenguaje de patrones, la
metacognición y la sinéctica.
Vamos a empezar por el primero, que será repetir pero corregido lo
dije en 13 de julio de 2011 en un post de
que curiosamente es el
post más leído desde el principio del blog de la Cátedra UNESCO de Educación a Distancia.
Los patrones constituyen una herramienta para el análisis de la
programación con una doble singularidad: Evitan el trabajo tedioso que supone
repetir partes de código, de diagramas de flujo o de procedimientos que en esencia
se repiten pero aplicados a contextos y situaciones distintas, y por otro lado
exige la capacidad de distinguir lo que tienen de común situaciones distintas.
Esta facultad es útil en la programación pero igualmente en multitud de
situaciones de la vida o de las actividades científica y profesionales, de
hecho nacieron como tales en la arquitectura. Un ejemplo de actividad muy
alejada a la computación es la enseñanza, la pedagogía. En ese apartado hablo
de un patrón pedagógico, el que se basa en el aprendizaje activo. Hay muchas
disciplinas o dominios de aprendizaje muy distintos por su objeto de
tratamiento, la naturaleza de lo que se aprende y los objetivos: el qué, de lo
que se aprende, pero que tienen en común que se aprende mediante la actividad. Pues
bien el diseñar esas actividades para que se produzca el aprendizaje es común a
los distintos ámbitos de aprendizaje. Y el patrón consiste en las pautas
comunes para todos esos casos y situaciones.
Patrones
El concepto de patrón y su práctica se
aplica, en la computación y en otros dominios, a estructuras de información que
permiten resumir y comunicar la experiencia acumulada y la resolución de
problemas, tanto en la práctica como en el diseño.
De esta forma un patrón puede
entenderse como una plantilla, una guía, un conjunto de directrices o de normas
de diseño. Los patrones pueden entenderse desde dos perspectivas: La propia del
dominio en el que estamos trabajando (la arquitectura, el diseño industrial, el
diseño instruccional, etc.), o bien desde la perspectiva de los lenguajes y las
técnicas computacionales que permiten el desarrollo de patrones.
Un patrón pues permite la adquisición
de “buenas prácticas” y sirve como referencia para nuevas aplicaciones y casos.
El almacenamiento y proceso sistemático de estos patrones permite construir corpus
de información o bases de datos de referencias documentadas a las que los distintos
profesionales o investigadores pueden dirigirse para sus trabajos específicos.
Los patrones tienen su origen en los
patrones de diseño, o en lo patrones genéricos, y sirven para aplicar en un campo cualquiera de la
actividad de creación y de desarrollo, donde se quiere optimizar el trabajo
intelectual haciendo más eficaz el trabajo empleado, o bien donde se quiere
comunicar una parte operativa del diseño independientemente del dominio técnico
del que se trate. Originalmente los patrones de diseño se deben al arquitecto
Christopher Alexander (…). Posteriormente estas técnicas se han adoptado en el
campo de la ingeniería de software, y de allí se han incorporado al diseño
instruccional tecnológico.
Podríamos plantearnos pues qué son en
esencia los patrones. Un patrón (Alexander et al., 1977) “describe un problema
que ocurre una y otra vez en nuestro entorno y, a continuación, describe el
núcleo de la solución de ese problema, de tal manera que el usuario puede
utilizar esta solución un millón de veces más, sin tener que hacerlo de la
misma manera dos veces ".
Especial importancia merecen los los
patrones instruccionales, aunque el término igualmente acuñado puede ser el de
patrones pedagógicos (Pedagogical Patterns Project, 2008), porque sirven de
comunicación en equipos pluridiceplinares en los que concurren técnicos en
computación, diseñadores instruccionales y profesores.
Se utiliza indistintamente el término
patrón y plantilla como traducciones del termino original pattern. Sin embargo creemo squ ees más
apropiado patrón que pauta o plantilla. Pauta o conjunto de pautas hace
referencia a procedimientos a aplicar de forma algorítmica o automática en un
contexto donde se cumplan determinadas condiciones. Mientras que patrón como
hemos visto hace referencia a un esquema completo de resolución de un problema
teniendo solo en presencia la perspectiva del patrón (por ejemplo si a un
problema de aprendizaje queremos aplicar el patrón de “aprendizaje autónomo”,
tendremos que aplicar, para la resolución del problema, la alternativa de las
posibles que implique al máximo la participación del alumno sin ayuda externa).
El objetivo en todo caso es captar la esencia
de la buena práctica de una forma resumida e independiente (abstrayendo los
elementos más significativos) de manera que pueda ser fácilmente comunicada a
los que la necesitan en un contexto de condiciones distinto. En su naturaleza
el patrón puede ser igualmente la presentación de esta información (de las
buenas prácticas, los conocimientos expertos, las soluciones a problemas,…) de
una forma accesible y sistematizada, de manera que para cada nuevo diseñador
pueda aprender o tener en cuenta lo que se conoce por expertos que hayan
resuelto ya el problema en cuestión, y sea fácil la transferencia de
conocimiento dentro de la comunidad.
De esta forma en esencia un patrón
resuelve un problema. Este problema debe ser una naturaleza tal que se repita
en distintos contextos. En el ámbito de la educación tenemos muchos problemas de esta naturaleza:
Son por ejemplo los que tienen que ver con la motivación, o con determinadas
motivaciones, de los estudiantes, la elección de los materiales para cada
situación de aprendizaje y la secuencia de los contenidos, los conocimientos
previos, las ideas implícitas, los criterios de evaluación de los estudiantes,…
Pedagogical
Patterns Project
(2008) establece una clasificación de los patrones pedagógicos en tres
categorías, basados en otras tantas formas de aprendizaje:
·
Aprendizaje
activo. Un patrón de este tipo se basaría en un conjunto de actividades que
involucren a los alumnos de manera activa. El
patrón se construye utilizando algún problema concreto que a menudo
pueden ocurrir en un entorno de enseñanza y que maximice la atención del alumno
por estar implicado en la resolución, o por sus experiencias pasadas o
presentes, por su carácter real etc.
·
Aprendizaje
experimental. Un patrón de este tipo se basaría en lo que es necesario aprender
mediante la experimentación o bien mediante las experiencias pasadas de los
alumnos estudiantes.
·
Enseñando
desde diferentes perspectivas. Un patrón de este tipo se basaría en la bondad
de los aprendizajes que supone por los alumnos el estudio de los recursos
educativos desde diferentes perspectivas, tratando los siguientes problemas:
preparar al estudiante para el mundo real, hacer uso de diferentes perspectivas
por pares (por ejemplo utilizando personal profesional de empresa).
A los que podríamos añadir un patrón
pedagógico para el “aprendizaje autónomo”, con abundancia de elementos de metacognición.
La naturaleza de estos problemas (los que
originan el patrón) es, como vemos, que se pueden repetir de forma diferente (en
las partes no sustanciales) cada vez. Y cuando aparece un problema de este tipo
conlleva consideraciones a tener en cuenta para tomar las decisiones en la
selección del procedimiento a utilizar para la resolución. Estas
consideraciones son las que influyen en los expertos a optar por una u otra resolución.
Son las consideraciones que el patrón presenta para que las tengamos en cuenta
en nuestra elección y que nos pueden acercar o alejar de una buena solución al
problema.
Un patrón presenta un problema y una
solución. O bien el criterio de la solución. De tal forma que los criterios que
deben aplicarse deben hacer que la solución sea la más acertada para el
problema planteado.
Lenguajes de patrón
La expresión “lenguajes de patrón”,
al igual que el término “patrón” son constructos acuñados por el
arquitecto Christopher Alexander. Los defensores de este enfoque para
los métodos de diseño suponen que esta forma de proceder ayuda a los no
expertos a resolver con éxito problemas de diseño complejo en bastantes
ocasiones. Al igual que todos los idiomas, un lenguaje de patrones tiene
un vocabulario, una sintaxis y una gramática. La parte distinta
es que el lenguaje se aplica a una actividad compleja que no es la
comunicación. En los lenguajes de patrones utilizados para el diseño, las
partes se descomponen de esta manera:
1.
El
vocabulario. Es el contenido del lenguaje. Lo constituyen una colección de términos,
que de forma especializada van a ayudar a describir soluciones a los problemas “en
un campo de interés”. Así, por ejemplo, en el lenguaje Arquitectura el
lenguaje lo constituyen términos como: cimientos, edificios, salas, ventanas,
cerraduras, etc
2.
"Sintaxis".
Cada solución a un problema incluye una descripción insertándola en una solución,
o en un contexto, más amplio, de manera que cada solución se ajusta a un diseño
más grande, más amplio o más abstractos. De manera que cada solución se
vincula a otras soluciones en una red de soluciones necesarias. Por
ejemplo, las habitaciones disponen de formas de obtener la luz, y las formas de
acceder y de salir.
3.
"Gramática".
Cada patrón, cada solución, incluye la descripción del problema que resuelve y
cómo lo hace, y el beneficio que se obtiene. Por lo tanto, si el beneficio
no es necesario o no compensa, la solución no se utiliza. Incluso puede
darse que una parte del diseño se puede omitir para ahorrar recursos. En
el ejemplo de la arquitectura, en el diseño de edificios o viviendas podría
darse el caso de que la gente no tenga que esperar para entrar en una
habitación, y en lugar de una sala de espera, tal vez se pueda utilizar un
sencillo vestíbulo.
4.
Índice de
relaciones entre términos. La descripción del lenguaje debe de contemplar el
índice que incluya aspectos gramaticales y sintácticos, con otros tipos de enlaces entre términos
(patrones) de manera que el diseñador puede pensar rápidamente de una solución a soluciones relacionadas de una
manera lógica.
5.
La red de
relaciones en el índice de la lengua permite muchas rutas diferentes a través
del proceso de diseño. Esto simplifica el trabajo del diseñador, ya que el
proceso puede comenzar desde cualquier parte del problema que el diseñador ya
conoce, y caminar hacia lo que se quiere construir de nuevo en el diseño. No
es preciso incluso que el diseñador comprenda de forma exhaustiva las razones
que llevan a solucionar un problema para aceptar en un primer momento la
estructura del patrón. Puede aceptarlo si el patrón ha funcionado bien y en un
momento posterior comprenderlo, y el diseño resultante puede resultar
utilizable. Por ejemplo podríamos no comprender que el equipo de limpieza
de los esquís se quedase fuera de la casa, y después comprender con el uso o
incluso antes, que esto debe ser así porque los esquiadores se deshacen del
equipo antes de entrar en casa.
En este sentido el lenguaje de patrones
no tiene porqué ser un instrumento de comunicación o de transmisión de
información, o de procedimientos, sólo entre individuos de distintos niveles de
experticia sino incluso de ámbitos de conocimiento diferentes. Puede ser un
instrumento de comunicación y de trabajo interdisciplinar.
En el caso que nos planteamos, el
aprendizaje en redes y la docencia virtual, el diseño instruccional, los
patrones pueden ser un instrumento de comunicación entre pedagogos (expertos en
enseñanza), o psicólogos (expertos en aprendizaje), de una parte, e
informáticos expertos en sistemas computacionales, desarrolladores ingenieros
de arquitectura, etc. De esta manera, y
de igual forma que señalábamos en los ámbitos y con los ejemplos de
arquitectura en los que no era preciso en un primer momento comprender
enteramente la naturaleza de patrón, es decir no hace falta las razones que
llevan a solucionar un problema, para aceptar la estructura del patrón, se
pueden dar situaciones análogas en los patrones de e-learning. Así por ejemplo
se pueden definir pautas (elementos de patrones no justificados) que tengan en
cuenta los principios del aprendizaje significativo de Ausubel (Ausubel, 1963) o
los principios de la secuenciación de contenidos de cualquiera de las teorías existentes, sin necesidad
de comprender su esencia más profunda desde el primer momento.
Así pues 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. Estos procesos incluyen la organización de personas o grupos que
tienen que tomar decisiones complejas, y revelan cómo interactúan las
diferentes funciones como parte del total.
Cómo describir
un patrón. El ejemplo más sencillo.
Siguiendo lo establecido por Alexander,
un patrón singular debe describirse en 5 partes:
1. "Contexto" - ¿Bajo qué
condiciones resolverá el problema la solución propuesta?
Un aspecto importante de los patrones
de diseño es identificar y documentar las ideas claves que hacen de un buen
sistema un sistema diferente de un sistema normal (para construir una casa, un programa
de ordenador, un objeto de uso cotidiano, o una secuencia de contenidos de e-learning),
y que ayude en el diseño de futuros sistemas. La idea que se expresa en un
patrón debe ser lo suficientemente general para ser aplicadas en casos muy
diferentes dentro de un contexto, pero aún lo suficientemente específico como
para dar orientaciones constructivas. El contexto donde se aplica es pues el
elemento definitorio del patrón
La gama pues de situaciones en las que
los problemas y soluciones se resuelven desde un patrón se llama su
contexto. De ahí se deriva que una parte importante de cada patrón es la
descripción de su contexto.
Por ejemplo del patrón que propone
Alexander es "un lugar para esperar", que puede referirse a una parada de bus, a la sala de espera de un
dentista,...
2. "Sistema de fuerzas" - Se
puede considerar como el problema o el objetivo
Frecuentemente estos problemas surgen
en un conflicto de intereses encontrados o "fuerzas". Un patrón
emerge como un diálogo entre posturas contrapuestas o en tensión, de tal forma
que la solución ayudará a equilibrar las fuerzas y finalmente a tomar una
decisión.
Por ejemplo, en un patrón cuya solución
fuese utilizar un teléfono inalámbrico las fuerzas serían: por un lado la
necesidad de comunicarse, y por otro la necesidad de hacer otras cosas al mismo
tiempo (cocinar, limpiar el polvo,…). Un patrón muy concreto sería
simplemente "utilizar teléfono inalámbrico". Patrones más
generales sería "dispositivo inalámbrico" o "actividad
secundaria", lo que sugiere que una actividad secundaria no deben
interferir con otras actividades.
3.
"Solución" – Es una configuración del sistema que pone las fuerzas
en equilibrio o resuelve el problema presentado
Contexto à Sistema de fuerzas à Solución
De esta forma un patrón siempre
tendría: Una entrada, que es un nombre sencillo, una descripción concisa del
problema, una solución definida, y suficiente información para ayudar al usuario
a entender cuando debe aplicar esa solución.
Ejemplos
Un ejemplo sencillo de patrón que exponen DeLano, D.E. y Rising, L. (1997) es cómo fabricar galletas
(cookies) con trozos de chocolate:
Nombre: CookieChocolateProporción
Contexto: Preparando galletas de harina con
trozos de chocolate para familia y amigos
Considera
estos patrones anteriormente: AzucarProporción, HarinaProporción, HuevoProporción.
Problema: Determinar la proporción optima
entre los trozos de chocolate y la masa de harina de la galleta
Solución: Se sabe que la gente considera los
trozos de chocolate como lo más deseable de la galleta. También se sabe que si echamos demasiado chocolate la
harina perdería poder de cohesión y la galleta se desharía. Como se hacen
pocas galletas, el coste no es un gran problema. Por tanto la solución es
echar tanto chocolate como se pueda con tal de mantener la masa unida y las
galletas compactas.
A
considerar ahora:
NuecesProporción o TiempoCocción o MetodoCongelación.
|
DeLano, D.E. y Rising, L. (1997) presentan bastantes más
ejemplos.
Las wikis el
ejemplo más importante.
Nadie prácticamente ignora qué es
Wikipedia. Como su nombre indica Wikipedia es una wiki. El origen de las wikis
está en la comunidad de patrones de diseño Portland Pattern, cuyos
integrantes, informáticos las utilizaron para escribir patrones de programa de
ordenador. La primera wiki llamada WikiWikiWeb fue creada por Ward
Cunningham, quien creó y dio nombre al concepto wiki, además implementó el
primer servidor WikiWiki, y con él creó el primer servicio de este tipo,
para el repositorio de patrones del Portland (Portland Pattern Repository)
en 1995.
Ward Cunningham (…) diseñó la Wiki original como un ejemplo concreto para
expresar los lenguajes de patrón de forma efectiva (http://c2.com/cgi/wiki). A partir de ella dio las
pautas paraa crear un lenguaje de patrón, que reproducimos. Pautas que asumen
el uso de una aplicación informática de hipertexto, como una wiki (Cunningham,
…).
·
Piense
sobre la situación, la web que desea crear, como una jerarquía de ideas, como
un fractal, desde lo general a lo particular, al detalle.
·
Ponga
cada idea en una página web diferente, nombrándola con un título que describa la
idea en pocas palabras.
·
Aparte,
en otra página, ponga un índice, ordenando las ideas desde las más amplias hasta
los detalles. Esto permitirá que el desarrollo (lenguaje de patrón), en este
caso la wiki, sea lineal, comprensible
en conjunto y fácilmente imprimible, si es necesario. Este paso incrementa de
forma amplia la usabilidad del sistema si todas las páginas, o la mayoría, se
mencionan en la tabla de contenidos o índice.
·
Además
de esto, que es lo que conocemos, estableció como pauta también que para cada
patrón, escriba una descripción del problema (tal como se lo ha planteado, la
solución la solución que ha dado y un ejemplo (realmente estaba hablando de metainformación).
En función de esta justificación, indica que se conecte con los patrones con
los que se relaciona.
·
Utilice
gráficos (esquemas, mapas de la web), son de gran ayuda.
·
Si
hay varios autores editando el lenguaje de patrón, cada uno debe firmar su
trabajo. Además de la razón más obvia, establecer la autoría y responsabilidad,
permite conseguir una lista de las páginas usando enlaces recíprocos en cada
página.
·
Ponga
enlaces donde sea apropiado
·
Ponga
un enlace al índice desde el final de cada página.
·
Establezca
ventanas de edición o para escribir al autor su página, con la posibilidad de
establecer las referencias con otras páginas.
Cronología
Año
|
Hecho
|
Obra
|
1979
|
El arquitecto
Christopher Alexander aportó en el contexto de la Arquitectura los conceptos
de patrón y de lenguajes de patrón.
|
Libro The
Timeless Way of Building; en él proponía el aprendizaje y uso de una
serie de patrones para la construcción de edificios de una mayor calidad.
|
1979
|
Christopher
Alexander y sus colegas dentro del libro anterior establecen de manera formal
y práctica el conocimiento arquitectónico en lenguaje de patrones
|
A Pattern Language, volumen de The Timeless Way
of Building
|
1987
|
Ward
Cunningham y Kent Beck usaron varias ideas de Alexander para desarrollar
cinco patrones de interacción hombre-ordenador (HCI)
|
Using Pattern Languages for OO
Programs,
artículo en OOPSLA-87
|
1995
|
Los patrones
de diseño impactan fuertemente en el mundo de la informática a partir de
la publicación del libro Design
Patterns, GoF (Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides),
en el que se recogían 23 patrones diseño comunes.
|
Concluido la primera vez el 13 de julio de 2011
Referencias.-
Alexander, Christopher, … http://downlode.org/Etext/Patterns/
Alexander, Christopher, … A Pattern Language. Summary
of a book by Christopher Alexander, Sara Ishikawa, Murray Silverstein, with Max
Jacobson, Ingrid Fiksdahl-King and Shlomo Angel. Published by Oxford University
Press. The original book contains much essential detail behind each of the
following patterns and is recommended reading.
Alexander et al., 1977, A Pattern Language, Oxford
University Press, px.
Ausubel, D. P. (1963). The psychology
of meaningful verbal learning; an introduction to school learning. New York:
Grune & Stratton.
DeLano,
D.E. y Rising, L. (1997). Introducing
Technology into the Workplace. Proceedings
PLoP’97 Conference. Consultado el [dd/mm/aaaa] en
http://hillside.net/plop/plop97/Proceedings/delano.pdf
Fricke, A. y Voelter, M. (2000). SEMINARS: A
Pedagogical Pattern Language about teaching seminars, [en línea]. Trabajo
presentado en EuroPLoP 2000. Disponible en:
http://www.voelter.de/publications/seminars.html [2008, 2 diciembre].
Pedagogical Patterns Project (2008), [en línea]. Disponible en:
http://www.pedagogicalpatterns.org/ [2008, Enero]
Bibliografía
básica de referencia
Design
Patterns. Elements of Reusable Object-Oriented Software - Gamma,
Helm, Johnson, Vlissides - Addison Wesley
A System of Patterns - Buschmann, Meunier, Rohnert,
Sommerlad, Stal - Wiley
UML
y Patrones. Introducción al análisis y diseño orientado a objetos - Larman -
Prentice Hall
AntiPatterns. Refactoring Software, Architectures and
Projects in Crisis - Brown, Malveau, McCormick Mowbray - Wiley
Patterns in Java - Mark Grand - Wiley
EJB Design Patterns - Floyd Marinescu - Wiley
PATRONES
DE DISEÑO: ELEMENTOS DE SOFTWARE ORIENTADO A OBJETOS REUTILIZABLES
Referencias en la web
Conservation Economy
Pattern Language - ejemplo de uso de lenguaje de patrón para organizar grupos y
recursos en una situación compleja (movimiento sostenible)
Comentarios
Publicar un comentario