POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
Crítica A UML - Based Pattern
1. Una crítica a
“A UML-Based Pattern Specification
Technique”
Javier E. Buelvas Cueto, Estudiante del programa de especialización en Ingeniería de Software,
Fundación Universitaria Tecnológico Comfenalco
La creciente complejidad de los sistemas informáticos representa un reto importante para los
ingenieros y arquitectos del software. De la preocupación inicial sobre la definición de la
estructura y calidad del código final, se ha pasado a dedicar cada vez más tiempo, atención y
esfuerzo al diseño y modelado del sistema. Los modelos proporcionan un mayor nivel de
abstracción, permitiendo trabajar con sistemas más complejos, y facilitando el proceso de
codificación e implementación del sistema de forma distribuida y en distintas plataformas.
En este nuevo contexto, los Patrones de Diseño ayudan a los desarrolladores de software a
resolver problemas de diseño orientado a objetos que repetidamente ocurren. Cuando
estos adaptan patrones a soluciones particulares, muchas veces elaboran modelos usando
UML. Sin embargo, a menudo, UML no es lo suficientemente expresivo para describir
patrones apropiadamente. Según [1], Cuando se ve desde fuera, un patrón de diseño se representa
como una colaboración parametrizada1. Cuando se ve desde dentro, un patrón e diseño es
simplemente una colaboración y se representa con sus partes estructural y de comportamiento.
Un patrón representado como una colaboraciones parametrizadas, es un grupo de objetos/clases colaborando entre sí que se pueden abstraer de
un conjunto de escenarios general.
2. Debido a este tratamiento, se presentan algunas limitaciones para expresar correctamente la
semántica asociada a un patrón, principalmente porque estos tienen propósitos diferentes.
Una colaboración modela la interacción que puede existir entre un conjunto de objetos para
lograr un objetivo específico; un patrón tiene un propósito más general, ya que debe especificar
una solución de diseño desde el punto de vista de su estructura y su comportamiento.
De hecho, cuando instanciamos una colaboración parametrizada el resultado es otra colaboración,
pero la instanciación de un patrón de diseño da lugar a una porción de diseño que debe satisfacer
las restricciones del patrón y que resuelve un problema concreto, pudiendo ser puramente
estructural y no incluir interacción alguna.
Un patrón debería verse como una plantilla capaz de guiar al diseñador en la flexible selección,
creación y validación de los elementos (clases, objetos, relaciones, atributos, métodos, etc.,) que
participan en la solución de un problema típico de diseño, sin embargo, los “ClassifierRole” o
“AssociationRole” de una colaboración parametrizada dependen de clasificadores o
asociaciones base que deben existir previamente y donde los “ClassiferRole” o
“AssociationRole” son una vista de éstos respectivamente. Además, sólo se pueden ligar
clasificadores o asociaciones a un parámetro con la única restricción de que el participante sea
del mismo tipo (o un descendiente del tipo) que el parámetro correspondiente.
Estos inconvenientes representan un problema para poder especificar la esencia de los patrones
de diseño en forma adecuada.
3. Una aproximación como solución a los problemas planteados anteriormente son los perfiles
UML (en inglés “UML Profiles”). Estos permiten extender la sintaxis y la semántica d e
UML para modelar elementos de dominios particulares.
Así como los perfiles UML extienden su vocabulario y los patrones de diseño definen para los
diseñadores un vocabulario común; también es posible usar perfiles para definir un
vocabulario de patrones en UML. De esta manera, los perfiles pueden ser usados no
solamente para dominios específicos, sino también para resolver problemas particulares en
diferentes dominios.
El perfil es un mecanismo definido por UML (en inglés, Unified Modeling Language)
[2] para extender y adaptar UML a una plataforma o dominio particular. Incluye tres
elementos: estereotipos, valores etiquetados y restricciones. Los estereotipos extienden el
vocabulario UML y es posible asociarle valores etiquetados y restricciones. Si bien, el
lenguaje natural es usado para definir restricciones, debido a su precisión, OCL (por sus siglas
en inglés, Object Constraint Language) es uno de los más adecuados.
Las bondades ofrecidas por los perfiles pueden ser aprovechadas en la transformación de
modelos a otros modelos o a código (facilitando la tarea a los diseñadores de software). En
los últimos años el concepto de perfil ha servido para cubrir distintos dominios; tales
como, tiempo real, procesos de negocio, y otros.
4. Cuando los desarrolladores de software modelan soluciones usando UML, muchas veces
encuentran que UML no es lo suficientemente expresivo para describir patrones
apropiadamente.
Numerosos trabajos de investigación se ocuparon de la descripción de patrones con diferentes
enfoques. Algunos trabajos estudiaron el uso de UML para definir y documentar patrones.
Por ejemplo, Le Guennec, Sunyé y Jézéquel en [5] modificaron el metamodelo 1.3 para
permitir colaboraciones en el meta-nivel y restricciones OCL, en lugar de
colaboraciones parametrizadas. La idea era mejorar el modelo de colaboración y las plantillas
UML para una mejor definición de los roles de los patrones.
La OMG en [10] introdujo la noción de “Paquete de Patrón de Negocio” (consideró que las
reglas que gobiernan los conceptos de negocio pueden ser representados con un patrón con
restricciones) para definir un patrón, y “Ligamiento de Patrón de Negocio” para aplicar un
patrón.
Fontoura y Lucena en [6] extendieron UML representando una clase de patrones de
diseño llamados “patrones de configuración”. La extensión a UML fue desarrollada
expresando un diagrama abstracto que permite mostrar diferentes formas de implementación;
y representando, además, un patrón de instanciación.
Una técnica de especificación para patrones fue propuesta por France, Kim y Song en [9].
Definieron un lenguaje de metamodelado (usando UML y restricciones OCL) para
5. especificar perspectivas de patrones; tales como estructura estática e iteraciones. Una
especificación de patrón define una familia de modelos UML en términos de roles.
Otros trabajos, como [7] y [8], estuvieron menos orientados a la especificación de
patrones para documentación, pero mostraron otras interesantes características. Sanada y
Adams en [7] extendieron UML para soportar patrones de diseño en diagramas de clases. Dang
y Yang en [8] presentaron un perfil UML para una mejor visualización de patrones de diseño
en diagramas de clases.
Barotto y Demonte en [11] propusieron una definición de patrones de diseño a
través del metamodelo UML. Utilizaron estereotipos con restricciones OCL para
especificar los elementos que componen un patrón. Sin embargo, no utilizaron la noción de
“perfil UML” definido en UML 2.0 [4], sino conceptos anteriores a dicha versión.
EL USO DE PERFILES UML PARA DEFINICIÓN DE PATRONES DE DISEÑO
Algunas investigaciones están orientadas a la definición de Patrones de Diseño con Perfiles
UML. Estas, analizan las ventajas de los perfiles para definir, documentar y visualizar
patrones de diseño. Al definir un perfil por cada patrón, estas van conformando una librería
de patrones especificados con perfiles UML. Además, de cierta forma intentan mostrar
que las herramientas UML son suficientes para introducir perfiles de patrones, sin
implementar una herramienta específica para patrones.
6. Algunos resultados parciales
Para comenzar se seleccionaron los patrones diseño denominados “estructurales” de [3]. La
experiencia inicial consistió en la definición del patrón “Composite”.
Se definieron tres estereotipos de clase: “Component”, “Leaf” and
“Composite”; y un esterotipo de asociación, “Children” (ver Figura 1).
Fueron establecidas restricciones OCL sobre los estereotipos, la cuales son mostradas a
continuación (el metamodelo UML es mostrado en la Figura 2 para entender mejor las
especificaciones OCL).
Children:(Core::Association)
inv:
self.connection->exists
(participant.isSterotyped (“Composite”) and multiplicity.min=1 and
multiplicity.max=1) and
self.connection->forAll (c1,c2|
c1.participant.isSterotyped (“Composite”)
and
c2.participant.isSterotyped (“Component”)
implies c1.aggregation=#composite and c2.aggregation=#none )
7. Conclusiones y trabajos futuros
Los perfiles UML pueden ser útiles para definir, documentar y visualizar patrones de diseño.
Además cuentan con la ventaja de que si las herramientas UML permiten introducir perfiles
de patrones, no es necesario implementar una herramienta específica para patrones.
El trabajo futuro está dirigido a buscar información de herramientas UML que permitan definir
perfiles UML. El análisis de las bondades de las diferentes herramientas, permitirá elaborar
una propuesta general para la especificación de patrones usando herramientas UML.
Además se pretende mostrar que al usar perfiles para especificar patrones; el perfil está siendo
utilizado no solamente para definir un dominio específico (tal como originariamente se pensó),
sino también para definir un dominio general.
De la misma forma que con “Composite”, se realizará la especificación de otros patrones
de diseño. Luego del análisis de las especificaciones resultantes, se podrá empezar a
desarrollar una arquitectura para patrones usando perfiles UML.
8. Referencias
[1] G. Booch, J. Rumbaugh, I. Jacobson, El Lenguaje Unificado de Modelado, Addison-Wesley,
2006, pp. 429-430.
[2] ISO/IEC, Unified Modeling Language (UML), Version 1.5, International Standard
ISO/IEC 19501.
[3] E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns. Elements of Reusable
Object- Oriented Software, Addison-Wesley. 1995.
[4] UML 2.0, Infraestructure Specification, http://www.omg.org/technology/ documents,
Agosto del 2004.
[5] A. Le Guennec, G. Sunyé, J. Jézéquel, “Precise Modeling of Design Patterns”, In UML
2000, Vol. 1939 LNCS, 2000, pp. 482-496.
[6] M. Fontoura, C. Lucena, “Extending UML to Improve the Representation of Design
Patterns”, Journal of Object Technology, 2000.
[7] Y. Sanada, R. Adams, “Representing Design Patterns and Frameworks in UML. Towards
a Comprehensive Approach”, Journal of Object Technology, Vol.1(2), 2002, pp.143–154.
9. [8] J. Dong, S. Yang, “Visualizing Design Patterns With A UML Profile”, IEEE Symposium
on Human Centric Computing Languages and Environments (HCC 2003), 2003.
[9] R. France, D. Kim, E. Song, “A UML-Based Pattern Specification Technique”,
IEEE Transactions on Software Engineering, Vol.30(3), 2004, pp.193-206.
[10] OMG, “UML Profile for Patterns Specification”, Parte del “UML Profile
for Enterprise distributed Object. Computing (EDOC) Specification”,
http://www.omg.org/technology/ documents, 2004.
[11] V. Barotto, M. Demonte, D. Riesco. “Definición de Patrones de
Diseño a través del metamodelo UML”. Tesis de Licenciatura en Ciencias de la
Computación. Universidad Nacional de Río IV, Argentina. 2005.