Modelando con UML
César Liza Avila
PRESENTACION
El Lenguaje Unificado de Modelado (UML), es un lenguaje para representar modelos de sistemas especialmente intensivos en el uso de software y no un método de desarrollo de software, como piensan muchos. Puede ser usado con diversos métodos, pero se obtiene mejor provecho de él, cuando se utiliza con el Proceso Unificado de Desarrollo de Software o Unified Software Development Process (USDP).
Este lenguaje simbólico para expresar modelos, a tenido un éxito impresionante debido a que fue creado por tres de los más importantes metodólogos: Booch, Rumbaugh y Jacobson, cuyos respectivos métodos de desarrollo de software orientado a objetos dominaban juntos más del 50% del mercado antes del lanzamiento oficial del UML. Ellos se reunieron en Rational Software para crear primero un método unificado, pero se dieron cuenta que era mejor primero unificar la simbología de sus métodos. Su propuesta de lenguaje de modelado a recibido el respaldo de las más grandes compañías de software del mundo y del OMG, una organización que difunde y crea estándares para el uso de tecnologías orientadas a objetos Este éxito se refleja en el uso cada vez mayor del lenguaje. Así, en la actualidad, la inmensa mayoría de proyectos informáticos utilizan el UML, además están apareciendo cada vez más herramientas de software que lo soporta, frecuentemente se dictan cursos de capacitación y las universidades están incluyendo el UML en los cursos de carrera.
Se han escrito ya muchos libros sobre el tema; sin embargo, cada uno de éstos tiene un objetivo, algunos intentan enseñar el UML como parte del Proceso Unificado, otros enseñan solo una pequeña parte de él y de manera informal, otros hablan del UML en combinación con Patrones de Software, otros son sólo manuales de referencia, guías de usuario, hablan del desarrollo de pequeños sistemas con UML, tratando de enseñar todo en un solo libro: el UML, el proceso, el CASE, el Lenguaje Visual y así por el estilo. También, podemos consultar el tedioso manual oficial de UML o, buscar en Internet páginas sobre el tema, pero éstas solo arañan la superficie del lenguaje, contienen muy pocos ejemplos prácticos y la gran mayoría de éstos ejemplos son los mismos. Así por ejemplo, para aquellos que hemos navegado por Internet buscando sobre UML, encontramos varias veces el conocido el ejemplo de la máquina de café y aunque muchos no han visto nunca una máquina como éstas, suele tomarse como ejemplo para el dictado de cursos sobre el tema y, por supuesto los profesores y alumnos difícilmente pueden imaginarse lo que ocurre en el caso de uso “dar vueltas”. Como no encontramos ningún libro que contenga una definición precisa de los elementos de UML y sobre todo que cuente con ejemplos prácticos, es que decidimos escribirlo.
Pensamos que no se puede enseñar todo al mismo tiempo: el UML, el Proceso Unificado y el uso de herramientas CASE que utilicen UML; sino más bien, en enseñar claramente los principios y como aplicarlos a situaciones concretas, ayudándonos de numerosos ejemplos. Así, utilizamos el mismo enfoque de los “Tres Amigos” (Booch, Rumbaugh y Jacobson), esto es, separamos el proceso de desarrollo de software de la notación. Este libro solamente trata de la notación, mientras que en uno próximo, hablaremos sobre el proceso, y tal vez otro sobre alguna herramienta CASE que permita modelar con UML.
En este libro encontrará más de 70 ejemplos desarrollados sobre los 9 diagramas del UML: casos de uso, clases, objetos, secuencia, colaboración, estado, actividad, componentes y despliegue. Asimismo, encontrará más de 75 ejercicios propuestos que sin duda, serán de valiosa ayuda, tanto para los que recién se inician, así como también para los docentes que enseñan el UML y para aquellos que ya conozcan el lenguaje.
En cada una de mis obras intento demostrar mediante ejemplos como la teoría se aplica a la práctica, bajo la premisa: “una buena teoría es lo más práctico”. Espero que con los ejemplos contenidos en este libro usted pueda aplicar los fundamentos de la orientación a objetos y del UML, a los modelos de la realidad que seguramente desarrollará en un futuro muy próximo.
Le rogamos que cualquier crítica, sugerencia, o inquietud, la dirija a la siguiente dirección electrónica: creadores@hotmail.com, que gustosos la responderemos con el ánimo de mejorar cada día. Asimismo, le invitamos a visitar nuestra página web www.geocities.com/cesar_liza.
César Liza Avila.
CONTENIDO
Presentación.............................................................................................17
CAPITULO I: Introducción al UML..........................................................19
El lenguaje de modelado unificado..............................................................20
El OMG................................................................................................20
Características generales del UML..............................................................21
Beneficios del UML.................................................................................22
Alcances del UML...................................................................................23
Lo que UML no intenta............................................................................24
Origen de UML y cómo se convirtió en un estándar.......................................25
UML presente y futuro............................................................................28
La importancia de modelar.......................................................................29
Vistas de un modelo...............................................................................30
Diagramas UML......................................................................................31
CAPITULO II: Diagramas de Casos de Uso........................................33
Diagramas de Casos de Uso......................................................................34
Casos de Uso.........................................................................................34
Representación gráfica de los casos de uso………........................................35
Nomenclatura de los casos de uso... ......................................................35
Características de los Casos de Uso.........................................................36
Los casos de uso son clasificadores..............................................................36
Actores..................................................................................................37
Representación gráfica de un actor...........................................................38
Nomenclatura de un actor......................................................................38
Relaciones en los diagramas de casos de uso................................................39
Relación de asociación..............................................................................39
Representación gráfica de una asociación..................................................39
Nomenclatura de una relación de asociación ..............................................40
Relación de generalización.........................................................................40
Representación gráfica de la relación de generalización.................................41
Nomenclatura de una relación de generalización..........................................41
Casos típicos.......................................................................................41
Relación <<include>>.............................................................................42
Representación gráfica de una relación <<include>>...................................43
Nomenclatura de una relación <<include>>..............................................43
Casos típicos.......................................................................................43
Relación <<extend>>.............................................................................44
Representación gráfica de una relación <<extend>>..................................44
Nomenclatura de una relación <<extend>>..............................................45
Casos típicos.......................................................................................45
Puntos de extensión en un caso de uso...................................................45
Cuando usar <<include>> y <<extend>>..................................................46
Representación gráfica de los diagramas de casos de uso...............................47
Documentación de los diagramas de casos de uso.........................................48
Documentación de un caso de uso con relación <<include>>.......................49
Documentación de un caso de uso con relación <<extend>>.......................50
Paquetes de casos de Uso.......................................................................50
Cómo construir los diagramas de casos de uso.............................................51
Cómo encontrar los Actores...................................................................51
Cómo encontrar los casos de uso...........................................................51
Cómo encontrar las relaciones entre actores y casos de uso.........................52
Describir el flujo de eventos...................................................................52
Ejemplos..................................................................................................53
Ejercicios Propuestos...................................................................................66
CAPITULO III: Diagrama de Clases.................................................... 69
Diagrama de Clases...................................................................................70
Diagrama de Objetos.................................................................................70
Clase......................................................................................................71
Representación Gráfica...............................................................................71
PRIMER COMPARTIMIENTO........................................................................72
Nombre...............................................................................................72
Multiplicidad de la Clase...........................................................................73
SEGUNDO COMPARTIMIENTO.....................................................................73
Atributos..............................................................................................73
Especificando atributos............................................................................73
Visibilidad de los atributos.........................................................................74
Multiplicidad (multiplicity) de los atributos......................................................75
El tipo (type) de los atributos....................................................................75
Valor inicial de un atributo.........................................................................76
Cadena de propiedades (property string) ...................................................76
Alcance de los atributos...........................................................................77
TERCER COMPARTIMIENTO........................................................................78
Operaciones..........................................................................................78
Visibilidad de las operaciones.....................................................................79
Lista de parámetros (parameters list) ........................................................80
El tipo de retorno (return-type) de las operaciones.........................................81
El valor por defecto (default value) de las operaciones....................................82
Alcance de las operaciones.......................................................................82
Polimorfismo y operaciones polimórficas...........................................................83
Responsabilidades de las clases......................................................................84
Casos particulares de clases..........................................................................85
Clase Abstracta......................................................................................86
Clase Parametrizada................................................................................87
Clase Asociación.....................................................................................89
Clase Activa...........................................................................................89
Clase Utilidad (utility class) .......................................................................90
Clase Interfaz (Interface Class) ................................................................90
Clase Hoja (Leaf Class)............................................................................91
Clase Raíz (Root Class)...……...............…..................................................91
Metaclase (metaclass)............................................................................91
Relaciones entre clases...............................................................................92
Relación de Dependencia............................................................................93
Relación de Generalización..........................................................................95
Relación de Asociación...............................................................................96
Extremo de la Asociación (Association End) ...............................................97
Detallando una Asociación......................................................................97
Clasificación de una Relación de Asociación....................................................99
Clasificación según el número de clases participantes.......................................99
Asociación binaria................................................................................99
Asociación N-aria...............................................................................100
Clasificación según como se unen para formar otra clase...............................100
Asociación AND (And Association) ..................................….…………………..101
Asociación de Agregación……...........................................................101
Asociación de Composición..............................................................102
Asociación XOR (Xor Association)..........................................................102
Estrategia para la creación del Diagrama de Clases.......................................103
Ejemplos.............................................................................................104
Ejercicios propuestos.............................................................................120
CAPITULO IV: Diagramas de Secuencia...............................................123
Diagrama de Secuencia...........................................................................124
Representación gráfica.............................................................................124
Objetos................................................................................................125
Línea de vida de un objeto........................................................................125
Activación o Foco de Control......................................................................126
Mensaje................................................................................................126
Tipos de mensajes..................................................................................127
Mensaje Asíncrono..............................................................................127
Mensaje de llamada a procedimiento.......................................................127
Mensajes Concurrentes.......................................................................127
Bifurcación de mensajes..........................................................................128
Iteración de mensajes.............................................................................128
Tiempos de Transición.............................................................................128
Métodos Recursivos.................................................................................129
Recomendaciones para dibujar diagramas de secuencia………………....................129
Ejemplos...............................................................................................130
Ejercicios propuestos...............................................................................136
CAPITULO V: Diagramas de Colaboración...........................................139
Diagrama de Colaboración.......................................................................140
Representación gráfica............................................................................140
Objeto................................................................................................141
Formas en que se presentan los objetos.....................................................141
Objeto Activo....................................................................................141
Objeto Multiobjeto..............................................................................142
Objeto Compuesto ............................................................................142
Enlace..................................................................................................142
Flujo de mensajes..................................................................................143
Numeración de mensajes…......................................................................143
Mensaje al mismo objeto.........................................................................144
Marcadores de creación y destrucción de objetos..........................................144
Mensajes condicionales............................................................................145
Mensajes condicionales mutuamente excluyentes..........................................145
Iteraciones............................................................................................145
Visibilidad...............................................................................................146
Visibilidad de Atributo............................................................................147
Visibilidad de Parámetro........................................................................147
Visibilidad Local...................................................................................148
Visibilidad Global..................................................................................149
Become................................................................................................149
Ejemplos...............................................................................................150
Ejercicios propuestos...............................................................................156
CAPITULO VI: Diagramas de Estado................................................157
Diagrama de Estados................................................................................158
Representación Gráfica..............................................................................158
Estado...................................................................................................159
Compartimiento para el nombre..............................................................159
Compartimiento para variables de estado..................................................159
Compartimiento para acciones................................................................160
Entry………………………..............................................................……….160
Exit................................………………………...................……………………..161
Do.................…..............................................................…………..…161
Include…................................................................................………161
Estados inicial y final.................................................................................163
Estado compuesto...................................................................................163
Simplificación de diagramas........................................................................164
Ocultamiento de la composición..................................................................165
Name Tab.....……...................................................…….............................166
Evento...................................................................................................166
Llamadas a eventos.................................................................................166
Especificación del tiempo……….....................................................................167
Transición...............................................................................................167
Transición simple..................................................................................168
Transición compleja..............................................................................169
Transición interna.................................................................................169
Autotransición......................................................................................170
Transición hacia y desde a estados compuestos o anidados..............................171
Indicador de historia..................................................................................172
Ejemplos...............................................................................................173
Ejercicios propuestos................................................................................185
CAPITULO VII:Diagramas de Actividad............................................187
Diagrama de Actividad..............................................................................188
Representación gráfica..............................................................................189
Actividad................................................................................................189
Acción...................................................................................................189
Representación de Actividades y Acciones…………...........................................190
Transiciones...........................................................................................190
Decisiones.............................................................................................191
Reunión de una bifurcación.......................................................................191
Barras de sincronización...........................................................................192
Inicio y terminación.................................................................................192
Diagramas de actividad anidados................................................................193
Carriles.................................................................................................193
Representación de objetos en un diagrama de actividad..................................194
Flujo de objetos......................................................................................194
Señales.................................................................................................195
Señal de envío....................................................................................196
Señal de recibo...................................................................................196
Eventos diferidos.................................................................................... 197
Ejemplos...............................................................................................198
Ejercicios propuestos................................................................................206
CAPITULO VIII: Diagrama de Componentes.....................................207
Diagrama de Componentes......................................................................208
Componentes........................................................................................209
Representación de componentes...............................................................210
Tipos de Componentes...........................................................................210
Usos de los diagramas de componentes.....................................................211
Relación entre clases y Componente………...................................................212
Estereotipos definidos.............................................................................213
Importancia de los componentes...............................................................214
Interfaces.............................................................................................214
Representación de interfaces.....................................................................215
Ejemplos...............................................................................................217
Ejercicios propuestos................................................................................221
CAPITULO IX: Diagrama de Despliegue...........................................223
Diagrama de Despliegue............................................................................224
Nodos...................................................................................................224
Representación de Nodos..........................................................................225
Tipos de Nodos.......................................................................................225
Estereotipos de los nodos...........................................................................226
Conexiones entre nodos............................................................................226
Representación de conexiones....................................................................227
Los nodos ejecutan componentes...............................................................227
Usos de los diagramas de Despliegue..........................................................228
Recomendaciones para modelar diagramas de despliegue................................228
Ejemplos...............................................................................................229
Ejercicios propuestos................................................................................236
Bibliografía..............................................................................................237
Acerca del Autor.......................................................................................239
RELACION DE EJEMPLOS
Capitulo 2:
2.1 : Caso de uso adecuado en un procesador de textos.
2.2 : Cinco casos de uso típicos en procesador de textos.
2.3 : Actores en un sistema de ventas de un supermercado.
2.4 : Si Ud. fuera empleado bancario y cliente ¿qué actor es usted?.
2.5 : ¿Cuál es el actor, si el Sistema Ventas alimenta a Sistema Contable?
2.6 : Caso de uso "enviar factura" en una empresa de servicio público.
2.7 : Generalización entre actores Supervisor de Ventas y Vendedor.
2.8 : Relación extend. Caso de uso Validar Usuario.
2.9 : Relación include. caso de uso venta de un activo al crédito.
2.10: Generalización de casos de uso. Realizar cobranza.
2.11: Casos de uso de ventas.
2.12: Distintos escenarios para un sistema.
2.13: Casos de uso para un sistema de pedidos por teléfono.
2.14: Casos de uso de un teléfono celular.
2.15: Casos de uso de máquina lavadora de botellas, tarros y bidones.
Capitulo 3:
3.1 : Clases que puede encontrar en una casa.
3.2 : Visibilidad, nombre, multiplicidad y tipo de la Clase Pared.
3.3 : Multiplicidad de la Clase Pisos.
3.4 : Uso del valor inicial para clases dentro de una casa.
3.5 : Relación entre la Clase Pared y la Clase Ventana.
3.6 : Clase que implementa funciones matemáticas.
3.7 : Relación de dependencia entre clases.
3.8 : Generalización de Clases. La Clase Persona.
3.9 : La Clase Cuenta Bancaria.
3.10: Clase abstracta en un sistema de ajedrez.
3.11: La clase vehículo: automóvil, camión, barco o avión.
3.12: Relaciones entre compañías y empleados.
3.13: Clase Asociación para torneo de fútbol.
3.14: Agregación. La Clase Polígono.
3.15: Composición. Una computadora personal.
3.16: La Clase Factura.
3.17: Generalización y Asociación XOR en una cuenta bancaria.
3.18: Clase Parametrizada. Una Lista de Elementos.
Capitulo 4:
4.1 : Diagrama de Secuencia para compras en un supermercado.
4.2 : Diagrama de Secuencia para una llamada telefónica.
4.3 : Diagrama de Secuencia cuando un usuario imprime un archivo.
4.4 : Diagrama de Secuencia para coger una pelota con la mano.
4.5 : Diagrama de Secuencia para un juego de dados.
Capitulo 5:
5.1 : Diagrama de Colaboración para calcular total de venta de factura.
5.2 : Diagrama de Colaboración del proceso ingresar nuevo cliente.
5.3 : Diagrama de Colaboración para atención de pedido.
5.4 : Diagrama de Colaboración para producción sobre pedido.
5.5 : Diagrama de Colaboración para venta de un pasaje por avión.
Capitulo 6:
6.1 : Diagrama de Estados de una vela común.
6.2 : Diagrama de Estados de un boleto que se vende por Internet.
6.3 : Diagrama de Estados para una puerta levadiza de un garaje.
6.4 : Diagrama de Estados de un libro en una Biblioteca.
6.5 : Diagrama de Estados para la acción de marcar un número telefónico.
6.6 : Diagrama de Estados para la caja de cambio de un automóvil.
6.7 : Diagrama de Estados para una cuenta bancaria.
6.8 : Diagrama de Estados de un ascensor.
6.9 : Diagrama de Estados para una máquina expendedora.
Capitulo 7:
7.1 : Diagrama de Actividad de un Sistema de Biblioteca.
7.2 : Diagrama de Actividad para impresión del informe de vuelo de avión.
7.3 : Diagrama de Actividad de atención de pedido.
7.4 : Diagrama de Actividad incluyendo estados del objeto Pedido.
7.5 : Diagrama de actividad que calcula intersección de dos rectas.
7.6 : Diagrama de Actividad para solicitud de servicio.
7.7 : Diagrama de Actividad de pago con tarjeta de crédito.
Capitulo 8:
8.1 : Diagrama de Componentes de programa en C++ graficas.cpp.
8.2 : Diagrama de Componentes de programa graficos.exe.
8.3 : Diagrama de Componentes de una agenda electrónica.
8.4 : Diagrama de Componentes en una pagina web.
Capitulo 9:
9.1 : Diagrama de Despliegue de programa administrador.exe y user.exe
9.2 : Diagrama de Despliegue de equipo de computo doméstico.
9.3 : Diagrama de Despliegue de una red Microsoft.
9.4 : Diagrama de Despliegue de una red estrella.
9.5 : Diagrama de Despliegue de una cabina Internet línea dedicada.
9.6 : Diagrama de Despliegue de una cabina Internet conexión satelital.
9.7 : Diagrama de Despliegue de una aplicación de búsquedas.