Meta-especificación y catalogación de patrones de software con lenguajes de dominio específico y modelos de objetos adaptativos: una vía para la gestión del conocimiento en la ingeniería del software (2014)

En los ultimos anos, la comunidad de patrones ha crecido a un ritmo vertiginoso, 
produciendo una gran cantidad de lenguajes y sistemas de patrones aplicables a diversos 
dominios, con distintos grados de exito y popularidad. A modo de ejemplo de este 
crecimiento proponemos un simple pero provocador ejercicio: sumar la cantidad de 
patrones publicados en tres de los libros mas influyentes de la literamra de patrones, 
Design Patterns: Elements of Reusable Object Oriented Software [GoF95], Pattern Oriented 
Software Architecture, Volume / [POSA96] y Patterns of Enterprise Application Architecture 
[Fowler02]. El numero total es 100 (un numero bastante grande de elementos para 
mantener en la memoria). Para complicar aun mas las cosas, en cada uno de los libros 
mencionados se describe a los patrones utilizando diferentes estructuras (plantillas) y los 
ejemplos estan escritos en distintos lenguajes de programacion sobre distintas 
infraestructuras de implementacion. Esto produce una diferencia de impedancia 
considerable entre todos ellos. 
Existen varias llamadas a la accion en distintas obras de referencia de la literamra de 
patrones ([POSA96], [GoF95], [Berczuk94]) que hacen evidente la necesidad de una forma 
estandarizada de describir, clasificar y almacenar a los patrones junto con una forma 
sencilla de compartir y utilizar estas descripciones. En la actualidad existen varios enfoques 
que resuelven el problema en forma parcial, pero en todos los casos tienen limitaciones e 
inconvenientes recurrentes. Esto convierte a la descripcion y catalogacion de patrones en 
un problema de primera clase que todavia no ha sido resuelto en forma satisfactoria 
[Welicki04c] [WelickiOS] [WeHckiOO]. 
En esta tesis se propone un modelo de meta-especificacion y catalogacion de patrones y 
conceptos como respuesta a las necesidades de gestion del conocimiento en este ambito de 
la ingenieria del software. La arquitectura general de la solucion propuesta se compone de 
un lenguaje de meta-especificacion para describir a los patrones a un alto nivel de 
abstraccion, un catalogo de patrones creados con ese lenguaje, una infraestrucmra de 
catalogacion y una herramienta de explotacion del catalogo. Para verificar la factibilidad de 
la solucion propuesta hemos creado un prototipo y lo hemos evaluado respecto a otras 
soluciones y enfoques existentes para demostrar que el modelo propuesto supera las 
dificultades recurrentes encontradas en otros enfoques. 
Los patrones emergen de la experiencia [WeHckiOo]. Tienen un ciclo de vida [WelickiOob] 
que comienza con conocimiento tacito en la cabeza de una persona o grupo de individuos y 
termina con una descripcion expHcita y rigida de ese conocimiento que puede ser 
compartida. El modelo propuesto en esta tesis produce un cambio significativo en este 
ciclo haciendolo mas dinamico e interactivo, sentando las bases para la evolucion y 
generacion de conocimiento a partir de interacciones entre los miembros de una 
comunidad (que puede estar distribuida geograficamente). A partir de esta generacion de 
conocimiento se promueve el refinamiento y mejora continua de los patrones, facilitando 
asi su evolucion constante para adaptarse a cambios no previstos en su contexto.