Académique Documents
Professionnel Documents
Culture Documents
7.1.1 Qu es UML?
UML es un lenguaje que est compuesto por un conjunto de diagramas agrupados por
un metamodelo que ayuda a especificar y disear el software de sistemas;
particularmente software orientado a objetos. Por
muchos aos fue el estndar de hecho de la comunidad informtica, aunque despus de
seis aos de su primera versin fue adoptado como tal.
7.1 Introduccin
7.1.1 Qu es UML?
Es un estndar abierto controlado por Object Management Group (OMG) [1]. Desde el ao 2005 el
lenguaje UML es un estndar aprobado por la ISO como ISO/IEC 19501:2005 Information technology
Open Distributed Processing Unified Modeling Language (UML) Version 1.4.2.
De la misma manera que un constructor de casas o edificios antes de apilar ladrillos elabora un plano,
un desarrollador de software antes de escribir cdigo hace un plano que le permita evaluar alternativas
de su diseo. Igual que una modista utilizando hojas de papel construye un molde para sus prendas en
forma previa a cortar la tela y coserla, un desarrollador de software necesita elaborar un modelo que
describa los diferentes aspectos del problema por resolver y de la solucin propuesta. UML es un
lenguaje de especificacin y diseo que permite a los desarrolladores construir modelos para estudiar,
analizar y decidir acerca de la estructura y del comportamiento que propondr como solucin y, en
definitiva, cmo estar compuesto y cmo se comportar el cdigo que implementar dicha solucin.
7.1 Introduccin
7.1.2 Preguntas frecuentes
Las preguntas que deseamos responder son las que con frecuencia hemos escuchado en personas sin experiencia
en la utilizacin de los diagramas de UML. Basaremos nuestra presentacin en las necesidades derivadas de la
complejidad del problema por resolver y en la experiencia del desarrollador.
Estas preguntas son:
1. Debo construir un diagrama/modelo para cada aspecto del problema?
2. Debo construir un diagrama/modelo para cada aspecto de la solucin?
3. Cules diagramas es necesario construir?
4. Los diagramas que debo construir dependen de la metodologa de desarrollo que utilizamos?
5. En qu momento del ciclo de vida del proyecto debo construirlos?
6. Quin construye cada modelo? Qu rol?
7. Cundo se utilizan los diagramas a lo largo del ciclo de vida del proyecto?
8. Qu debo incluir en cada diagrama? Cun detallados deben ser?
9. Qu aporta cada diagrama?
10. Cmo relaciono los diagramas?
11. Cmo los mantenemos actualizados ante cambios?
12. Qu herramientas puedo utilizar?
7.2 Evolucin histrica
Aos despus estas propuestas fueron fundidas con la inclusin de los casos de uso
aportados por Ivar Jacobson y sus colegas [6], en lo que se llam UML. Fueron
popularizados como los tres amigos y la herramienta que produjo la empresa que los
reuni, Rational, fue la primera en soportar dicho lenguaje. De esta unin adems
fueron publicados dos libros: uno que describa el lenguaje [7] y otro, la metodologa
propuesta que se llam Proceso Unificado de Desarrollo de Software [8].
El lenguaje ha tenido algunos cambios desde su versin 1.1 hasta la 1.5. Hoy da la
vigente es la 2.0, la cual ha incorporado nuevos diagramas orientados a construir
especificaciones de procesos de negocio. Estos
diagramas son los utilizados para hacer modelado de flujo de trabajo y procesos en lo
que se llama BPM (Business Process Modeling). Tambin ha incorporado diagramas
temporales en los que se pueden especificar restricciones de tiempo en diagramas de
objetos.
7.2 Evolucin histrica
Antes de responder las preguntas planteadas, haremos un repaso de cmo es utilizado UML [5] y a
partir de ste ensayaremos las respuestas.
7.3.1 Dibujo (Sketch)
Usado por los desarrolladores para comunicar diferentes aspectos de un sistema. Definicin de
aspectos de diseo en reuniones colaborativas. Se utilizan herramientas o se hacen a mano alzada. No
interesan detalles
aportados por el lenguaje. Slo se incorporan aqullos que resulten relevantes al objetivo con que se
construy el diagrama.
7.3.2 Plan (Blueprint)
Usado como herramienta desde la cual se comprende un sistema por desarrollar (diagramas previos al
cdigo) o ya desarrollado (documentan cdigo ya existente - ingeniera inversa). Interesan los detalles
ya que de all se guiarn los desarrolladores para escribir el cdigo casi mecnicamente.
Se utilizan herramientas de tipo CASE (Computer Aided Software Engineering), es decir, asistidas por
computadoras.
7.3 Cmo es utilizado en la comunidad informtica?
7.3.3 Lenguaje de programacin
Usado como lenguaje de programacin a partir del uso de herramientas sofisticadas. Interesan todos
los detalles. Generadores de cdigo sustituyen a los programadores. Ejemplo: Model Driven
Architecture (MDA), Platform Independent Model (PIM), Platform Specific Model (PSM).
Es importante para el desarrollador no confundir el modo en que est haciendo uso de UML y ubicarse
as en la perspectiva correcta. La mayor cantidad de fallas en su utilizacin que hemos observado se
debi a que en el mismo proyecto se usaba en la modalidad Dibujo para algunos diagramas y se
pretenda utilizar como Plan para otros. Los diagramas as construidos generan desconcierto en los
miembros de los grupos de desarrollo que, ante esta situacin, desestiman su uso y padecen su
carencia.
Su uso ms difundido es en la modalidad Dibujo. Esto es debido al objetivo con que se construyen los
diagramas y en general toda documentacin. En el seno del grupo de desarrollo el objetivo est dado
por la necesidad de comunicacin entre los miembros, para lo cual alcanza su uso en esta modalidad.
Tambin alcanzan los diagramas as construidos como documentacin a futuro para realizar
mantenimiento del sistema durante su vida til en servicio. Sin embargo, deseamos refinar este
concepto y para ello distinguiremos dos perspectivas distintas que determinarn dentro de esta
modalidad de uso la informacin que se va a incorporar en los diferentes diagramas.
7.4 Perspectivas
Las dos perspectivas que mencionamos estn motivadas por las dos diferentes vistas que
los desarrolladores necesitan en dos momentos del ciclo de vida del proyecto de desarrollo
[5]. stas son independientes de la
metodologa utilizada y estn determinadas por las diferentes preocupaciones de los
desarrolladores en los momentos mencionados: la comprensin del problema por resolver
y la propuesta de una solucin.
Martin Fowler [5] llama a estas perspectivas conceptual y de software. Nosotros
compartimos esta visin pero las llamaremos problema y solucin.
7.4.1 Problema (concepcin y anlisis)
La preocupacin y el objetivo de los primeros momentos de cualquier proyecto son
entender cmo los usuarios interactuarn con el sistema, entender las reglas del negocio,
definir un lenguaje comn y determinar el
alcance del proyecto. Para la realizacin de estas tareas, la utilizacin de UML para expresar
conceptos es muy importante. Ms que la precisin, se necesita la posibilidad de concebir y
analizar conceptos.
7.4 Perspectivas
7.4.1 Problema (concepcin y anlisis)
UML ofrece diagramas de casos de uso para mostrar la interaccin de los actores con el sistema,
diagramas de clases para la perspectiva conceptual, diagramas de actividad para modelar flujos de
trabajo y diagramas de estado para mostrar el ciclo de vida de los conceptos extrados del dominio del
problema.
7.4.2 Solucin (diseo)
La otra perspectiva est dada por la elaboracin de una solucin. La preocupacin es elaborar un
diseo que sea quizs escalable, flexible de cambiar, fcil de probar, etctera. Para definir este diseo
queremos ser ms precisos y nos ayudamos de diagramas de clases con mayor cantidad de adornos
(detalles) para definir la estructura de nuestro sistema, diagramas de secuencia para mostrar su
comportamiento, diagramas de paquetes para realizar particiones y separar incumbencias y diagramas
de estado para mostrar ciclos de vida y de componentes para documentar instalacin en distintos
ambientes. Todos estos diagramas definen la estructura y el comportamiento del cdigo; por esta razn
en UML Distilled: A Brief Guide to the Standard Object Modeling Language [5] la llaman software. Si
bien proponemos la utilizacin en la modalidad Dibujo, queda claro que en esta perspectiva
detallaremos aspectos que en la anterior no era necesario.
7.4 Perspectivas
7.4.3 Respuestas a las preguntas frecuentes
A continuacin respondemos las preguntas que nos formulamos en una seccin anterior.
1. Debo construir un diagrama/modelo para cada aspecto del problema?
Por lo general los sistemas de software, por las caractersticas del problema por resolver y de su
solucin, enfatizan algunos aspectos en desmedro de otros. Esto implica que no siempre ser necesario
construir todos los diagramas. Por ejemplo, para un sistema complejo con varias y diferentes reas de
negocio seguramente ser til construir un diagrama de paquetes que muestre la distribucin de las
funcionalidades en cada uno de ellos. Adems, son indicados los diagramas de actividad en estos casos
en los que puede documentarse el flujo de informacin entre los diferentes roles. En el caso de un
sistema pequeo estos modelos no aportan mayor informacin.
2. Debo construir un diagrama/modelo para cada aspecto de la solucin?
Siguiendo el mismo razonamiento que en la pregunta anterior, no siempre los diagramas aportan
informacin de utilidad. Por ejemplo, en modelos de clases simples los diagramas de clases son
suficientes. Sin embargo, cuando estas clases participan de relaciones con otras clases, y stas son
complejas, es necesario entender cmo interactan las instancias de estas clases en memoria. En estos
casos son de utilidad los diagramas de secuencia y/o comunicacin que muestran los aspectos
dinmicos.
7.4 Perspectivas
7.4.3 Respuestas a las preguntas frecuentes