Seg煤n sus creadores, UML (Lenguaje Unificado de Modelado) es un lenguaje gr谩fico para visualizar, especificar, construir y documentar los componentes de un sistema software. UML permite tanto la especificaci贸n conceptual de un sistema como la especificaci贸n de elementos concretos, como pueden ser las clases o un dise帽o de base de datos.
Seg煤n su definici贸n, los objetivos de UML son los siguientes:
Visualizar: UML permite representar mediante su simbolog铆a el contenido y la estructura de un sistema software. La notaci贸n UML permite definir modelos que ser谩n claramente comprensibles por otros desarrolladores facilitando as铆 el mantenimiento del sistema que describe.
Especificar: UML permite especificar los procesos de an谩lisis, dise帽o y codificaci贸n de un sistema software. Tambi茅n permite determinar modelos precisos, sin ambig眉edades, detallando las partes esenciales de los mismos.
Construir: Las anteriores caracter铆sticas permiten que UML pueda generar c贸digo en distintos lenguajes de programaci贸n y tablas en una base de datos a partir de modelos UML. Adem谩s permite simular el comportamiento de sistemas software.
Documentar: Como ya se coment贸 antes, UML permite especificar los procesos de an谩lisis, dise帽o y codificaci贸n y tambi茅n permite documentar los mismos, dejando clara la arquitectura del sistema.
Tras la aparici贸n de los lenguajes orientados a objetos se buscaron nuevas metodolog铆as que permitiesen el an谩lisis y dise帽o de aplicaciones bajo dichos lenguajes; estas metodolog铆as fueron los primeros lenguajes de modelado orientados a objetos. Al no poder cubrir 茅stos todas las necesidades de los desarrolladores, surgi贸 una nueva generaci贸n de lenguajes m谩s potentes liderados por el m茅todo de Booch, el m茅todo OOSE de Jacobson y el m茅todo OMT de Rumbaugh; cada uno de estos m茅todos destacaba en algunos puntos pero fallaba en otros.
UML se comenz贸 a gestar en la empresa Rational cuando Booch y Rumbaugh decidieron unir sus m茅todos para conseguir un lenguaje est谩ndar y s贸lido. M谩s tarde se incorpor贸 Jacobson, lo que dio lugar a la versi贸n 0.9 de UML en 1996; posteriormente se cre贸 un consorcio con varias organizaciones interesadas en UML. La versi贸n 1.0 de UML surgi贸 en 1997 con la contribuci贸n de IBM, HP, Oracle, Microsoft y otras organizaciones.
El desarrollo de UML contin煤a actualmente bajo el control de IBM (que adquiri贸 Rational); la 煤ltima versi贸n de UML es la 2.0.
Los tres elementos que forman el modelo conceptual de UML son: los bloques b谩sicos de construcci贸n del lenguaje, las reglas que se aplican sobre esos bloques y los mecanismos comunes de UML.
Existen tres tipos de bloques de construcci贸n:
Elementos: Son los modelos UML (clases, casos de uso, estados, anotaciones鈥)
Relaciones: Ligan elementos entre s铆, establecen la forma en que interact煤an.
Diagramas: Representaci贸n gr谩fica de un grupo de elementos y sus relaciones.
A continuaci贸n vamos a describir los elementos, relaciones y diagramas que se han utilizado para el an谩lisis y dise帽o del proyecto.
Clases: En una clase se agrupan todos los objetos que comparten los mismos atributos, m茅todos y relaciones. Los atributos son caracter铆sticas y propiedades comunes en todos los objetos de la clase. Los m茅todos son operaciones que deben cumplir las instancias de la clase. Las clases se representan como un rect谩ngulo donde figuran el nombre de la clase, sus atributos y sus m茅todos.
Casos de uso: Un caso de uso es una descripci贸n de un conjunto de acciones ejecutadas por el sistema tras la orden de un agente (llamado actor) que puede ser el usuario de la aplicaci贸n, la propia aplicaci贸n, otro caso de uso o un elemento externo (hardware). Los casos de uso suelen representar funcionalidades del sistema; se representan como una elipse en cuyo interior figura el nombre (lo m谩s descriptivo posible) del caso de uso.
Interfaz: Es una colecci贸n de operaciones (sin su implementaci贸n) que especifican un servicio de una determinada clase. Describe el comportamiento visible externamente de ese elemento (completamente o s贸lo una parte). Se representa con un c铆rculo y, generalmente, se encuentra conectada a la clase que realiza.
Diagramas de casos de uso: Un diagrama de casos de uso es un diagrama que muestra un conjunto de casos de uso con sus relaciones y los actores implicados. Es un diagrama que sirve para modelar la vista est谩tica de un programa. La vista est谩tica nos permite visualizar el comportamiento externo del programa; de esta forma conseguimos conocer qu茅 es lo que debe hacer el programa independientemente de c贸mo lo haga y sabremos los elementos que interact煤an con el sistema. Los elementos implicados en un diagrama de casos de uso son los casos de uso, las relaciones y los actores. Las relaciones y los casos de uso ya han sido explicados anteriormente y el papel del actor tambi茅n ha sido comentado pero merece la pena detallarlo m谩s: Un actor es un rol que interact煤a con el sistema. Lo definimos como rol porque un actor puede ser tanto un usuario de la aplicaci贸n como otro sistema o dispositivos externos.
Diagramas de secuencia: Un diagrama de secuencia es un diagrama de interacci贸n UML. Estos diagramas muestran la secuencia de mensajes que se van lanzando los objetos implicados en una determinada operaci贸n del programa. Dentro del diagrama los objetos se alinean en el eje X respetando su orden de aparici贸n. En el eje Y se van mostrando los mensajes que se env铆an, tambi茅n respetando su orden temporal. Cada objeto tiene una l铆nea de vida donde se sit煤a su foco de control. El foco de control es un rect谩ngulo que representa el tiempo durante el que un objeto est谩 activo ejecutando una acci贸n. Con este sencillo esquema podemos visualizar la comunicaci贸n y sincronizaci贸n bajo un estricto orden temporal de los objetos implicados en las distintas funcionalidades de un sistema.
Diagramas de colaboraci贸n: Esencialmente es un diagrama que muestra interacciones organizadas alrededor de los roles. A diferencia de los diagramas de secuencia, los diagramas de colaboraci贸n muestran expl铆citamente las relaciones de los roles. Por otra parte, un diagrama de colaboraci贸n no muestra el tiempo como una dimensi贸n aparte, por lo que resulta necesario etiquetar con n煤meros de secuencia tanto la secuencia de mensajes como los hilos concurrentes.
Los bloques de construcci贸n se deben combinar siguiendo las normas que establece UML. UML establece una serie de normas sobre c贸mo nombrar a los elementos, relaciones y diagramas; la visibilidad y alcance de dichos nombres y sobre su integridad (c贸mo dise帽ar relaciones consistentes). Podremos decir que un modelo est谩 bien formado cuando cumpla estas reglas.
* Nombres: como llamar a los elementos, relaciones y diagramas.
* Alcance: el contexto que da un significado espec铆fico a un nombre.
* Visibilidad: como se pueden ver y utilizar esos nombres por otros.
* Integridad: como se relacionan apropiada y consistentemente unos elementos con otros.
* Ejecuci贸n: que significa ejecutar o simular un modelo din谩mico.
Bajo una serie de mecanismos que se aplican durante todo el proceso de desarrollo de modelos en UML, se consiguen dise帽os simples y eficientes. Estos mecanismos son los siguientes:
Especificaciones: UML no es simplemente un lenguaje que proporciona elementos gr谩ficos para modelado, tras cada elemento existe una especificaci贸n que nos va a permitir detallar textualmente el comportamiento de los mismos; de esta forma con los elementos gr谩ficos conseguimos una visualizaci贸n global del sistema y con la especificaci贸n conseguimos una visualizaci贸n detallada del mismo.
Adornos: Todos los elementos gr谩ficos en UML poseen una notaci贸n gr谩fica que representa los aspectos m谩s importantes de 茅stos; a煤n as铆 existe una notaci贸n que permite representar los aspectos m谩s espec铆ficos a trav茅s de adornos, consiguiendo as铆 una especificaci贸n a煤n m谩s detallada.
Divisiones comunes: UML permite representar las distintas divisiones que presenta el dise帽o orientado a objetos. Por ejemplo la divisi贸n clase/objeto donde un objeto es la manifestaci贸n concreta de la clase. UML permite el modelado conjunto de los mismos a trav茅s de una notaci贸n espec铆fica.
Mecanismos de extensibilidad: UML proporciona un lenguaje abierto en el que se pueden expresar los matices de los distintos sistemas, para ello hace uso de tres mecanismos que permiten extender el lenguaje:
- Estereotipo: Permite crear nuevos bloques de construcci贸n partiendo de los ya existentes.
- Valor etiquetado: Permite a帽adir nuevas propiedades a un bloque de construcci贸n.
- Restricci贸n: Permite a帽adir o modificar las reglas referidas a los bloques de construcci贸n.
[BOOC, 1999] BOOCH, G., RUMBAUGH, J., JACOBSON, I. 鈥淓l lenguaje unificado de modelado鈥. Ed. Addison Wesley Iberoamericana, Madrid, 1999.
[LARM, 1999] LARMAN, C. 鈥淯ML y Patrones, introducci贸n al an谩lisis y dise帽o orientado a objetos鈥. Ed. Prentice Hall, M茅xico, 1999