Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modulo Lenguaje Unificado de Modelado Uml Ing. Harold Cabrera Meza
Modulo Lenguaje Unificado de Modelado Uml Ing. Harold Cabrera Meza
1
TABLA DE CONTENIDO
INTRODUCCION .................................................................................................... 6
1.2.2. CLASES...................................................................................................... 15
1.2.4. ASOCIACIONES......................................................................................... 18
2
2.1.1. DIAGRAMAS DE OBJETOS ...................................................................... 38
3
DESARROLLO ..................................................................................................... 75
4
PRIMERA UNIDAD
5
INTRODUCCION
6
1. INTRODUCCIÓN AL LENGUAJE UNIFICADO DE MODELADO
UML es sólo un lenguaje y por tanto es tan solo una parte de un método de
desarrollo de software, además, es independiente del proceso, aunque para
utilizar óptimamente se debería usar en procesos que fuese dirigido por los casos
de uso, centrado en la arquitectura, interactivo e incremental
7
1.1.2. UML no es un método
Inicialmente los métodos son una técnica para llevar a cabo una acción, Uml es un
compendio de modelos que pueden ser interpretados de forma directa a una gran
variedad de lenguajes de programación como Java, C++ o Visual Basic, e incluso
a tablas en una base de datos relacional o una base de datos orientadas a objetos
Catálisis: Un método orientado a objetos que fusiona mucho del trabajo reciente
en métodos orientados a objetos, y además ofrece técnicas especificas para
modelar componentes distribuidos.
Objetory: Un método de Caso de Uso guiado para el desarrollo, creado por Ivar
Jacobson.
8
1994),
1.1.3. Modelos
Los modelos de UML que se tratan en esta parte son los siguientes:
9
Diagrama de Casos de Uso: muestra un conjunto de casos de uso, actores y
relaciones, cubren la vista de casos de uso estática de un sistema.
Notas
Figura 1.
10
Dependencias
Elementos en UML
Figura 2.
11
Elementos Estructurales
Nombre Descripción Símbolo
Interfaz • Es una colección de operaciones que
especifica un servicio de una clase o
componente, representa el
comportamiento completo de una clase
o componente
Colaboración • Se definen como una interacción y es
una sociedad de roles y otros
elementos que colaboran para
proporcionar un comportamiento
cooperativo mayor que la suma de los
comportamientos de sus elementos
• las colaboración representan la
implementación de patrones que
forman un sistema
Caso de Uso • Es una descripción de secuencias de
acciones que un sistema ejecuta y que
produce un resultado observable de
interés para un actor particular
• Se utiliza para estructurar el
comportamiento en un modelo
Clase Activa • Es un clase objetos tienen uno o mas
procesos o hilos de ejecución y por lo
tanto pueden dar origen a actividades
de control
• Son iguales a las clases excepto en
que sus objetos representan elementos
cuyos comportamiento es concurrente
con otros elementos
Componente • Es una parte física y reemplazable de
un sistema que conforma con un
conjunto de interfaces y proporciona la
implementación de dicho conjunto
• Representa típicamente e
empaquetamiento físico de diferentes
elementos lógicos, como clases
interfaces y colaboraciones
Nodo • Es un elemento físico que existe en
Nodo1
tiempo de ejecución y representa un
rescursos computacional que dispone
de memoria y con frecuencia
capacidad de procesamiento
12
Estos siete elementos (clases, interfaces, colaboraciones, casos de uso, clases
activas, componentes y nodos) son los elementos estructurales básicos que se
pueden incluir en el modelo UML. También existen variaciones de estos siete
elementos, tales como actores, señales, procesos e hilos, y aplicaciones,
documentos, archivos, bibliotecas, páginas y tablas.
Los Elementos de agrupación son las partes organizativas de los modelos UML.
Estos son las cajas en las que pueden descomponerse un modelo
Paquete
Los paquetes son los elementos de agrupación básicos con los cuales se puede
organizar un modelo UML. También hay variaciones, tales como los framework,
los modelos y los subsistemas
13
Relaciones
• Dependencias
• Asociaciones
• Generalizaciones
• Realización
Estas relaciones son los bloques básicos de construcción para las relaciones de
UML.
Relaciones en UML
Diagramas
14
1.2.2. Clases
Nombre Figura
Origen atributos
Mover()
Visualizar() operaciones
Figura 3.
15
Estudiante
nombre
apellido atributos
fecha Nacimiento
Figura 4.
Estudiante
Nombre
Apellido
Fecha nacimiento
Matricular()
Evaluar() Operaciones
Aprobar()
Figura 5.
Estudiante
nombre
apellido
fecha Nacimiento
matricular()
evaluar()
aprobar()
Responsabilidades
Respetar el
Reglamento Responsabilidades
Estudiantil
Figura 6.
16
Usos Comunes de las Clases
Para definir las clases que intervienen dentro de un sistema se recomienda como
puntos de partida las siguientes consideraciones:
1.2.3. Objetos
Figura 7.
17
1.2.4. Asociaciones
Es una relación estructural que especifica que los objetos de un elemento están
conectados con los objetos de otro. Dada una asociación entre dos clases, se
puede navegar desde un objeto de una clase hasta el objeto de otra clase, y
viceversa. Una asociación que conecta dos clases se dice binaria, sí conecta más
de dos clases se denomina asociación n-arias, las asociaciones se utilizarán
cuando se quieren representar relaciones estructurales.
Figura 8.
18
Multiplicidad
Roles
Figura 9.
19
Para indicar el papel que juega una clase en una asociación se puede especificar
un nombre de rol. Se representa en el extremo de la asociación junto a la clase
que desempeña dicho rol.
Agregación
Figura 10.
1.2.5. Diagramas
20
Con el modelado de sistemas se obtienen deferentes tipos de vistas, las vistas
estáticas de los sistemas en UML se representan con 4 tipos de diagramas que se
describen a continuación
Diagramas Estructurales
• Diagramas de Clases
• Diagramas de Objetos
• Diagramas de Componentes
• Diagramas de despliegue
21
Diagramas de Comportamiento
En el modelado orientado a objetos los diagramas de casos de uso son los que
representan en general el funcionamiento del sistema siendo estos los mas
utilizados como base del desarrollo de un modelo real, representa casos de uso,
actores y relaciones, se utilizan especialmente para organizar y modelar el
comportamiento de un sistema.
Diagramas de Secuencia
Diagramas de colaboración
Diagramas de estado
Diagrama de Actividades
22
modelar la función de un sistema así como para resaltar el flujo de control entre
objetos
23
Cuando se crea un diagrama de clases, se esta modelando una parte de los
elementos y las relaciones que configuran la vista de diseño del sistema, por esta
razón cada diagrama de clases debe centrarse en una colaboración cada vez.
Para modelar una colaboración se debe tener en cuenta:
1 1
Responsabilidad vendedor
Ventas promedio
Buscar clientes
1 1
facturacomestibles facturainmuebles
Factura
Registrar venta()
Registrar proveedor()
Registrar cliente()
Informes()
Figura 11.
24
• Para modelar un esquema lógico de base de datos
Universidad
Asignado a
0..1
director
Figura 12.
25
El anterior diagrama muestra en detalle cada una de las clases con sus
respectivos atributos, los cuales permiten construir la base de datos física,
comenzando por la parte inferior izquierda se encuentra las clases estudiantes,
curso y profesores, hay una asociación
Las clases se han marcado como persistentes, es decir, sus instancias se han
concebido para almacenar en una base de datos u otra forma de almacenamiento
persistente.
Figura 13.
• Tipos de datos: un tipo cuyos valores no tienen identidad, incluyendo los tipos
primitivos predefinidos.
<<type>>
Figura 14.
26
• Señal: la especificación de un estímulo asíncrono enviado entre instancias
<<signal>>
DisparoAlarma
Figura 15.
Kernell32
Figura 16.
Figura 17.
Figura 18.
27
• Subsistema: agrupación de elementos, algunos de los cuales constituyen una
especificación del comportamiento de los otros elementos contenidos
<<subsystem>>
subsistema de servicio al
cliente
Figura 19.
Es necesario saber que para el modelado de sistemas con Uml, las clases
muestran en la definición de sus atributos ciertos tipos de símbolos, los cuales
determinan si los elementos asociados a cada clase son públicos o privados por
ejemplo:
28
Factura(root)
Registrar venta()
Registrar proveedor()
Clase padre principal Registrar cliente()
Informes()
Facturacomestibles Facturainmuebles
Clases hijos
Mostrarusuario() Mostrarusuario() (leaf)
Las clases tienen muchas operaciones entre sí, las que se “heredan” entre clases
se denominan polimórficas esto ocurre cuando los objetos han ejecutado una
operación que esta definida en la clase que los contiene pero con la diferencia de
que la operación cambia de significado dependiendo del contexto donde se este
ejecutado.
Relaciones de Dependencia:
29
como una línea continua dirigida hacia el elemento del que se depende. Las
dependencias se deben aplicar cuando se quiera representar que un elemento
utiliza a otro
Relaciones de Generalización
Figura 21.
30
Relaciones de Asociación
Una asociación es una relación estructural que especifica que los objetos de un
elemento se conectan a los objetos de otro, por ejemplo, una clase biblioteca
podría tener una asociación uno a muchos con clase libro, indicando que cada
instanci de libro pertenece a una instancia de biblioteca, además, dado un libro, se
puede encontrar su biblioteca, y dando una biblioteca se puede navegar hacia
todos los libros, gráficamente, un asociaciones se representa con una línea
continua entre la misma o diferentes clases. Las relaciones se utilizan para
mostrar relaciones estructurales.
1 *
Usuario Clave
Interfaz
31
Cada interfaz ha de tener un nombre que la distingue de otras interfaces, el
nombre de la interfaz puede ser simple o de camino cuando en este se indica el
nombre de la interfaz y el paquete en el que se encuentre
Nombre elemental
IOrtografía
Nombre de camino
Red::IRouter
Figura 23.
Abrirconexion()
EstablecerURL() Operaciones de la interfaz
Figura 24.
32
Las relaciones entre interfaces se realizan de la misma manera como se
relacionan con las clases puesto que las relaciones son del mismo tipo, para
recordar: relaciones de generalización, relaciones de asociación y relaciones de
dependencia.
Figura 25.
33
Tipos y roles
Para representar el rol que representa un objeto dentro de una relación de clases
en notación UML se tiene por ejemplo:
Figura 26.
Figura 27.
La figura anterior representa una asociación de clases con una interfaz especifica,
como se ve existe una asociación de entre las clases persona y empresa en cuyp
contexto persona juega un rol llamado e, cuyo tipo es empleado
34
1.2.9 Paquetes e Instancias
Elementos contenidos en el
paquete
Figura 28.
35
Las instancias no aparecen aisladas, casi siempre están ligadas a una
abstracción. La mayoría de las instancias que se modelan en UML serán
instancias de clases (llamadas objetos), aunque se pueden tener instancias de
otros elementos, como componentes, nodos, casos de usos y asociaciones.
Polimorfismo
Herencia
36
SEGUNDA UNIDAD
37
2. CARACTERISTICAS DEL MODELADO UML
38
Figura 30.
En este instante, m está enlazado a dos instancias de Area. Una de ellas (a2)se
muestra con sus propios enlaces a tres objetos Pared y un objeto Puerta. Cada
una de estas paredes está etiquetada con su anchura actual, y cada una se
muestra enlazada a sus paredes vecinas. Como sugiere este diagrama de objetos,
el robot ha reconocido el área que lo contiene, que tiene paredes en tres lados y
una puerta en el cuarto.
Como vemos los diagramas de objetos son especialmente útiles para modelar
estructuras de datos complejas. Evidentemente puede existir una multitud de
posibles instancias de una clase particular, y para un conjunto de clases con t
relaciones entre ellas, pueden existir muchas más configuraciones posibles de
39
estos objetos. Por lo tanto, al utilizar diagramas de objetos sólo se pueden mostrar
significativamente conjuntos interesantes de objetos concretos o prototípicos.
• Actor.
• Casos de Uso.
• Relaciones de Uso, Herencia y Comunicación.
Elementos
Actor:
Figura 31.
Una definición previa, es que un Actor es un rol que un usuario juega con
respecto al sistema. Es importante destacar el uso de la palabra rol, pues con esto
se especifica que un Actor no necesariamente representa a una persona en
particular, sino más bien la labor que realiza frente al sistema.
40
Caso de Uso:
Figura 32.
Es una operación o tarea específica que se realiza tras una orden de algún agente
externo, sea desde una petición de un actor o bien desde la invocación desde otro
caso de uso.
Relaciones:
• Asociación
Es el tipo de relación más básica que indica la invocación desde un actor o caso
de uso a otra operación (caso de uso). Dicha relación se denota con una flecha
simple.
• Dependencia o Instanciación
Es una forma muy particular de relación entre clases, en la cual una clase
depende de otra, es decir, se instancia (se crea). Dicha relación se denota con una
flecha punteada.
41
Generalización
Este tipo de relación es uno de los más utilizados, cumple una doble función
dependiendo de su estereotipo, que puede ser de Uso (<<uses>>) o de Herencia
(<<extends>>).
Este tipo de relación esta orientado exclusivamente para casos de uso (y no para
actores).
Ejemplo:
42
Como una primera aproximación identificamos a los actores que interactúan con el
sistema:
Figura 33.
Figura 34.
Además podemos notar que un item puede ser una Botella, un Tarro o una Jaba.
Figura 35.
43
Otro aspecto es la impresión de comprobantes, que puede ser realizada después
de depositar algún item por un cliente o bien puede ser realizada a petición de un
operador.
Figura 36.
Figura 37.
44
2.1.3. Diagramas de Interacción
Diagrama de Secuencia
c : Cliente p : ProxyODBC
<<create>>
:Transacción
establecerAcciones(a,d,o) establecerValores(d,3,4)
Tiempo
establecerValores(a,”CO”)
éxito
Línea de vida
<<destroy>>
Foco de control
Figura 38.
45
Los diagramas de secuencia tienen 2 características que los distinguen de los
diagramas de colaboración, en primer lugar está la línea de vida de un objeto que
es la línea discontinua vertical que representa la existencia de un objeto a lo largo
de un periodo de tiempo. La mayoría de los objetos que aparecen en un diagrama
de secuencia existirán mientras dure la interacción, los objetos se colocan en la
parte superior del diagrama con sus líneas de vida dibujadas de arriba hasta
abajo. Pueden crearse objetos durante la interacción, sus líneas de vida
comienzan con la recepción de mensajes estereotipado como create. Los objetos
pueden destruirse durante la interacción, sus líneas de vida acaban con la
recepción del mensaje estereotipado como destroy, además, se muestra la señal
visual de una gran X que marca el final de sus vidas.
Diagrama de Colaboración
c : Cliente Objeto
1: <<create>>
2: establecerAcciones(a,d,o)
enlace 3: <<destroy>>
<<local>>
mensaje
<<global>>
:Transacción P : ProxyODBC
2.1:establecerValores(d,3,4)
2.2: establecerValores(a,”Co”)
Figura 39.
Los diagramas colaboración tienen dos características que los distinguen de los
diagramas de secuencia, el primero para indicar cómo se enlaza un objeto a otro,
se puede asociar un objeto al extremo mas lejano de un enlace con la palabra
local que indica que el objeto designado es local al emisor. En segundo lugar esta
el numero de secuencia, para indicar la ordenación temporal de los mensajes, se
46
precede de un numero iniciando con el numeral 1, que se incrementa
secuencialmente por cada nuevo mensaje en el flujo de control
• Estados de actividad
• Estados de acción
• Transiciones
• Objetos
47
Figura 40.
ProcesarFactura(Fact)
Entry / SacarPrimeraFactura(Fact)
Figura 41.
Transiciones
Figura 41.
Estado de Acción
48
Bifurcaciones
Bifurcación secuencial
Figura 42.
División y unión
Figura 43.
49
Calles
Procesar Pedido
Extraer Pedido
Enviar Pedido
Pagar Factura
Cerrar Pedido
Figura 44.
50
2.2. Modelado dinámico
Señales
Una señal puede enviarse como la acción de una transición de estado en una
máquina de estados, o como el envío de un mensaje en una interacción.. En UML,
la relación entre una operación y los eventos que puede enviar se modela con
realcion de dependencia, estereotipada como send.
Señal AgenteDeMovimiento
Posición
Velocidad
<<signal>> <<send>>
colisión moverA()
fuerza : Float
51
Eventos
iniciarpilotoAutomático(normal)
Manual Automático
parámetro
Figura 45.
alter (2 Segundos)
Inactivo /cortarConexión() Activo
Evento de cambio
Evento de tiempo
Figura 46.
52
2.3.2 Máquinas de Estado
Un transición es una relación entre dos estados que indica que un objeto que esté
en el primer estado realizará ciertas acciones y entrará el segundo estado cuando
ocurra un evento específico y se satisfagan unas condiciones específicas y una
actividad es una ejecución no atómica en curso, dentro de una máquina de
estados.
Estados
Terminado
nombre
nombre
Figura 47. estado
53
Como se observa en la grafica anterior en la máquina de estados de un objeto se
pueden definir dos estados especiales, en primer lugar e punto inicial que indica el
puno de comienzo por defecto para la máquina de estados o el subestado. En
segundo lugar, el estado final, que indica la ejecución de la máquina de estado o
del estado que lo contiene ha finalizado
Transiciones
Una transición es una relación entre dos estados que indica que un objeto que
esté en el primer lugar estado realizará ciertas acciones y entrará en el segundo
estado cuando ocurra un evento específico y se satisfagan unas condiciones
específicas, cuando se produce este cambio de estado, se dice que la transición
se ha disparado, hasta que se dispara la transición se dice que el objeto está en
el estado origen, después de dispararse se dice que esta en el estado destino.
ruido
Inactivo Inactivo Inactivo
objetoEn(p)[representaAmenaza]/
t.añadirObjeto(p)
contactar
Inactivo Inactivo
Una transición tiene cinco partes, estado origen, evento disparado, condición de
guarda, acción y estado de destino; una transición se representa con una línea
continua dirigida desde el estado origen hacia el destino y una autotransición es
una transición cuyos estados origen y destino son los mimos
54
2.4.3 Tiempo y Espacio
{cada 1ms}
c1 : notasDePrueva
n: Nota
c3 : a ñadir(k)
b: BufferDeEventosMIDI t : TransmisionMIDI
Figura 49. t1 : quitar()
{cada 1 ms}
Restricción de tiempo
Figura 50.
55
t : TransmisionMIDI Valor etiquetado de localización
{location=Enrutador}
2.4.4 Diagramas de Estado
Estado inicial
sonando
Inactivo cabeceraOK
Transición sin Conectando Procesando
disparador
enviarFax
colgar verificaciónOK
evento evento
entry/descolgar
Transmisión Limpiando
error/imprimirError exit/desconectar
estado
acción acción
Estado compuesto
Figura 51.
56
2.3. Modelado Arquitectónico
Componentes
clases
Figura 52.
Interfaz
Imagen.java Imagen.java
ObservadorDeImagen
Figura 53.
Relación de dependencia
realización
57
Despliegue
pos.exe Contactos.exe
componentes
Figura 54.
Colaboraciones
58
siguiente figura
Nombre
Paso de mensajes
entre nodos
Figura 55.
Patrones
Mecanismos
frameworks <<framework>>
recepción de pedidos
facturación
comprobación
Figura 56.
mecanismos
59
Los mecanismos pueden nombrar una plantilla formada por un conjunto de de
abstracciones que colaboran entre sí para llevar a cabo algún comportamiento
común, se representan como colaboraciones parametrizadas que se muestran de
forma parecida a las clases plantilla, observe la siguiente figura
rol platilla
ligadura Observador
BarraDesplazamiento
Observador
colaboraciones
rol
Figura 57.
Frameworks
60
frameworks
ligaduras Pacificador
<<frameworks>>
AdministradorCiclico
Cliente
Gestor
GestorDeEvento
s
EventosComunes
colaboraciones
Figura 58.
Dado que los diagramas de componentes muestran los componentes software que
constituyen una parte reusable, sus interfaces, y su interrelaciones, en muchos
aspectos se puede considerar que un diagrama de componentes es un diagrama
61
de clases a gran escala. Cada componente en el diagrama debe ser documentado
con un diagrama de componentes más detallado, un diagrama de clases, o un
diagrama de casos de uso.
find.html
página
find.exe
nateng.dll
componente
biblioteca
Figura 60.
62
nodo
modem
conexión
Figura 61.
63
<<system>>
sistema de
ventas
Figura 62.
64
TERCERA UNIDAD
65
3. DESARROLLO ORIENTADO A OBJETOS CON UML
La notación que se usa para los distintos modelos, tal y como se ha dicho
anteriormente, es la proporcionada por UML, que se ha convertido en el estándar
de facto en cuanto a notación orientada a objetos. El uso de UML permite integrar
con mayor facilidad en el equipo de desarrollo a nuevos miembros y compartir con
otros equipos la documentación, pues es de esperar que cualquier desarrollador
versado en orientación a objetos conozca y use UML (o se esté planteando su
uso).
Visión General
66
En este apartado se va a presentar una visión general para poder tener una idea
del proceso a alto nivel, y más adelante se verán los pasos que componen cada
fase.
• Construcción: La construcción del sistema. Las fases dentro de esta etapa son
las siguientes:
- Pruebas: Se llevan a cabo una serie de pruebas para corroborar que el software
funciona correctamente y que satisface lo especificado en la etapa de
Planificación y Especificación de Requisitos.
67
3.2. Fase de Planificación y Especificación de Requisitos
3.2.1 Actividades
• Definir el Plan-Borrador.
• Crear el Informe de Investigación Preliminar.
• Definir los Requisitos.
• Registrar Términos en el Glosario. (continuado en posteriores fases)
• Implementar un Prototipo. (opcional)
• Definir Casos de Uso (de alto nivel y esenciales).
• Definir el Modelo Conceptual-Borrador. (puede retrasarse hasta una fase
posterior)
• Definir la Arquitectura del Sistema-Borrador. (puede retrasarse hasta una
fase posterior)
• Refinar el Plan.
3.2.2. Requisitos
68
requisitos es un paso clave en la creación de cualquier producto software. Para
entender y describir los requisitos la técnica de casos de uso constituye una
valiosa ayuda.
Casos de Uso
Nótese que UML no define un formato para describir un caso de uso. Tan sólo
define la manera de representar la relación entre actores y casos de uso en un
diagrama. Sin embargo, un caso de uso individual no es un diagrama, es un
documento de texto. En la siguiente sección se define el formato textual para la
descripción de un caso de uso que se va a utilizar en este documento..
El siguiente Caso de Uso de Alto Nivel describe el proceso de sacar dinero cuando
se está usando un cajero automático:
69
En un caso de uso descrito a alto nivel la descripción es muy general,
normalmente se condensa en dos o tres frases. Es útil para comprender el ámbito
y el grado de complejidad del sistema.
Los casos de uso que se consideren los más importantes y que se considere que
son los que más influencian al resto, se describen a un nivel más detallado: en el
formato expandido.
La principal diferencia con un caso de uso de alto nivel está en que incluye un
apartado de Curso Típico de Eventos, pero también incluye otros apartados como
se ve en el siguiente ejemplo:
1. Este caso de uso empieza cuando un Cliente introduce una tarjeta en el cajero.
2. Pide la clave de identificación.
3. Introduce la clave.
4. Presenta las opciones de operaciones disponibles.
5. Selecciona la operación de Reintegro.
6. Pide la cantidad a retirar.
7. Introduce la cantidad requerida.
8. Procesa la petición y da el dinero solicitado. Devuelve la tarjeta y genera un
recibo.
9. Recoge la tarjeta.
10. Recoge el recibo.
11. Recoge el dinero y se va.
70
Cursos Alternativas:
Como guía para la identificación inicial de casos de uso hay dos métodos:
a) Basado en Actores
b) Basado en Eventos
1. Identificar los eventos externos a los que el sistema va a tener que responder.
2. Relacionar los eventos con actores y casos de uso.
• Pedir un producto.
• Matricularse en un curso de la facultad.
• Comprobar la ortografía de un documento en un procesador de textos.
• Comprar un libro en una tienda de libros en Internet
71
Al definir los límites del sistema se establece una diferenciación entre lo que es
interno y lo que es externo al sistema. El entorno exterior se representa mediante
los actores.
a) Según su Importancia
72
Como ejemplo de una parte de un Caso de Uso Real para el caso del reintegro en
un cajero automático tenemos la siguiente descripción del Curso Típico de
1. Este caso de uso empieza cuando un Cliente introduce una tarjeta en la ranura
para tarjetas.
2. Pide el PIN (Personal Identification Number).
3. Introduce el PIN a través del teclado numérico.
4. Presenta las opciones de operaciones disponibles.
5. etc.
En principio, los casos de uso reales deberían ser creados en la fase de Diseño de
Bajo Nivel y no antes. Sin embargo, en algunos proyectos se plantea la definición
de interfaces en fases tempranas del ciclo de desarrollo, en base a que son parte
del contrato. En este caso se pueden definir algunos o todos los casos de uso
reales, a pesar de que suponen tomar decisiones de diseño muy pronto en el ciclo
de vida. No hay una diferencia estricta entre un Caso de Uso Esencial y uno Real,
el grado de compromiso con el diseño es un continuo, y una descripción específica
de un caso de uso estará situada en algún punto de la línea entre Casos de Uso
Esenciales y Reales, normalmente más cercano a un extremo que al otro, pero es
raro encontrar Casos de Uso Esenciales o Reales puros.
• Nombre: El nombre de un Caso de Uso debería ser un verbo, para enfatizar que
se trata de un proceso, por ejemplo: Comprar Artículos o Realizar Pedido.
• Alternativas equiprobables: Cuando se tiene una alternativa que ocurre de
manera relativamente ocasional, se indica en el apartado Cursos Alternativos.
Pero cuando se tienen distintas opciones, todas ellas consideradas normales se
puede completar el Curso Típico de Eventos con secciones adicionales.
73
2. Pide la operación a realizar.
3. Escoge la operación A.
4. Presenta las opciones de pago.
5. Selecciona el tipo de pago: Si se paga al contado ver sección Pago al Contado.
O si se paga con tarjeta ver sección Pago con Tarjeta.
6. Genera recibo.
7. Recoge el recibo y se va.
Cursos Alternativos:
Cursos Alternativos:
1. Después de listar las funciones del sistema, se definen los límites del sistema y
se identifican los actores y los casos de uso.
2. Se escriben todos los casos de uso en el formato de alto nivel. Se categorizan
como primarios, secundarios u opcionales.
3. Se dibuja el Diagrama de Casos de Uso.
4. Se detallan relaciones entre casos de uso, en caso de ser necesarias, y se
ilustran tales relaciones en el Diagrama de Casos de Uso.
5. Los casos de uso más críticos, importantes y que conllevan un mayor riesgo, se
describen en el formato expandido esencial. Se deja la definición en formato
expandido esencial del resto de casos de uso para cuando sean tratados en
posteriores ciclos de desarrollo, para no tratar toda la complejidad del problema
de una sola vez.
74
6. Se crean casos de uso reales sólo cuando:
• Descripciones más detalladas ayudan significativamente a incrementar la
comprensión del problema.
• El cliente pide que los procesos se describan de esta forma.
7. Ordenar según prioridad los casos de uso (este paso se va a ver a
continuación).
Figura 63.
Para tomar la decisión de qué casos de uso se van a tratar primero es necesario
ordenarlos según prioridad. Las características de un caso de uso específico que
van a hacer que un caso de uso tenga una prioridad alta son las siguientes:
75
• Impacto significativo en el diseño de la arquitectura. Por ejemplo, si aporta
muchas clases al modelo del dominio o requiere persistencia en los datos.
• Se obtiene una mejor comprensión del diseño con un nivel de esfuerzo
relativamente bajo.
• Incluye funciones complejas, críticas en el tiempo o de nivel elevado de riesgo.
• Implica bien un trabajo de investigación significante, o bien el uso de una
tecnología nueva o arriesgada.
• Representa un proceso de gran importancia en la línea de negocio.
• Supone directamente un aumento de beneficios o una disminución de costos.
Para realizar la clasificación se puede asignar a cada caso de uso una valoración
numérica de cada uno de estos puntos, para conseguir una puntuación total
aplicando pesos a cada apartado.
76
En esta fase se trabaja con los modelos de Diseño de Alto Nivel construidos en la
fase anterior, ampliándolos con los conceptos correspondientes a los casos de uso
que se traten en el ciclo de desarrollo actual.
3.3.1 Actividades
Identificación de Conceptos
77
Para poner nombre a los conceptos se puede usar la analogía con el cartógrafo,
resumida en los siguientes tres puntos:
• Usar los nombres existentes en el territorio: hay que usar el vocabulario del
dominio para nombrar conceptos y atributos.
• Excluir características irrelevantes: al igual que el cartógrafo elimina
características no relevantes según la finalidad del mapa (por ejemplo datos de
población en un mapa de carreteras), un Modelo Conceptual puede excluir
conceptos en el dominio que no son pertinentes en base a los requisitos.
• No añadir cosas que no están ahí: si algo no pertenece al dominio del problema
no se añade al modelo.
Identificación de Asociaciones
Una asociación es una relación entre conceptos que indica una conexión con
sentido y que es de interés en el conjunto de casos de uso que se está tratando.
Se incluyen en el modelo las asociaciones siguientes:
78
Identificación de Atributos
Los atributos deben tomar valor en tipos simples (número, texto, etc.), pues los
tipos complejos deberían ser modelados como conceptos y ser relacionados
mediante asociaciones, incluso cuando un valor es de un tipo simple es más
conveniente representarlo como concepto en las siguientes ocasiones cuando:
Glosario
79
esta interacción los actores generan eventos, solicitando al sistema operaciones.
Por ejemplo, en el caso de una reserva de un billete de avión, el empleado de la
agencia de viajes solicita al sistema de reservas que realice una reserva. El evento
que supone esa solicitud inicia una operación en el sistema de reservas.
Los casos de uso representan una interacción genérica. Una instancia de un caso
de uso se denomina escenario, y muestra una ejecución real del caso de uso, con
las posibles bifurcaciones y alternativas resueltas de forma particular.
Para cada caso de uso que se esté tratando se realiza un diagrama para el curso
típico de eventos, y además se realiza un diagrama para los cursos alternativos de
mayor interés. En la siguiente figura se muestra el Diagrama de Secuencia del
Sistema para el caso de uso Realizar Reintegro de un cajero automático.
Figura 64.
80
Construcción de un Diagrama de Secuencia del Sistema
En la fase de Diseño de Alto Nivel sólo se haría para los dos últimos tipos de
elemento, pues una clase software pertenece al Diagrama de Clases de Diseño.
Puesto que el sistema entero puede ser representado por un concepto, también se
puede modelar el comportamiento del sistema completo mediante un Diagrama de
Estados.
81
Para los casos de uso complejos se puede construir un Diagrama de Estados. El
Diagrama de Estados del sistema sería una combinación de los diagramas de
todos los casos de uso. El uso de Diagramas de Estados es opcional.
En la fase de Diseño de Bajo Nivel se crea una solución a nivel lógico para
satisfacer los requisitos, basándose en el conocimiento reunido en la fase de
Diseño de Alto Nivel. Los modelos más importantes en esta fase son el Diagrama
de Clases de Diseño y los Diagramas de Interacción, que se realizan en paralelo y
que definen los elementos que forman parte del sistema orientado a objetos que
se va a construir (clases y objetos) y cómo colaboran entre sí para realizar las
funciones que se piden al sistema, según éstas se definieron en los contratos de
operaciones del sistema.
3.4.1 Actividades
Las actividades que se realizan en la etapa de Diseño de Bajo Nivel son las
siguientes:
Un Caso de Uso Real describe el diseño real del caso de uso según una
tecnología concreta de entrada y de salida y su implementación. Si el caso de uso
implica una interfaz de usuario, el caso de uso real incluirá bocetos de las
82
ventanas y detalles de la interacción a bajo nivel con los widgets (botón, lista
seleccionable, campo editable, etc.) de la ventana.
1. Diagramas de Colaboración.
2. Diagramas de Secuencia.
83
• Usando los apartados de responsabilidades y de post-condiciones del contrato
de operación, y la descripción del caso de uso como punto de partida, diseñar
un sistema de objetos que interaccionan para llevar a cabo las tareas
requeridas.
• Si el diagrama se complica, dividirlo en dos diagramas más pequeños. Para ello
se termina la secuencia de mensajes en un mensaje determinado, y en el
segundo diagrama se comienza con el mensaje que terminó el primero. Debe
indicarse en el primer diagrama que el resto de la interacción se detalla en el
segundo.
Conocer:
Hacer
Por ejemplo, puedo decir que “un Recibo es responsable de calcular el total” (tipo
hacer), o que “una Transacción es responsable de saber su fecha” (tipo conocer).
Las responsabilidades de tipo “conocer” se pueden inferir normalmente del Modelo
Conceptual y una responsabilidad no es lo mismo que un método, pero los
métodos se implementan para satisfacer responsabilidades.
84
Diagrama de Clases de Diseño
Figura 65.
85
Relaciones de Dependencia para Representar Visibilidad entre Clases
Cuando una clase conoce a otra por un medio que no es a través de un atributo
(una asociación con la navegabilidad adecuada), entonces es preciso indicar esta
situación por medio de una dependencia.
Un objeto debe conocer a otro para poder llamar a uno de sus métodos, se dice
entonces que el primer objeto tiene “visibilidad” sobre el segundo. La visibilidad
más directa es por medio de atributo, cuando hay una asociación entre ambas
clases y se puede navegar de la primera a la segunda (un atributo de la primera es
un puntero a un objeto de la segunda). Hay otros tres tipos de visibilidad que hay
que representar en el diagrama de clases mediante relaciones de dependencia:
- Local: Cuando en un método de una clase se define una variable local que es un
objeto de otra clase, se dice que la primera tiene visibilidad local sobre la segunda.
La relación de dependencia entre ambas clases se etiqueta con el estereotipo <>.
- Global: Cuando hay una variable global en el sistema, instancia de una clase A, y
un método de una clase B llama a un método de A, se dice que la clase B tiene
visibilidad global sobre la clase A. La relación de dependencia entre ambas clases
se etiqueta con el estereotipo <>.
86
pueden presentar, pero hay un caso en el que sí hay cierta globalidad: las clases
que sólo van a tener una instancia. Suele tratarse de clases que se han creado en
el Diseño de Bajo Nivel, que no aparecían en el Modelo Conceptual.
Varias clases de nuestro sistema pueden querer llamar a los métodos de la única
instancia de una clase de ese tipo, entonces sí se considera que es beneficioso
que se pueda acceder a esa instancia como un valor accesible de forma global.
solitario:
87
3.4.4. Construcción Diagramas de Diseño
No todas las clases que aparecían en el Modelo Conceptual tienen por qué
aparecer en el Diagrama de Diseño. De hecho, tan solo se incluirán aquellas
clases que tengan interés en cuanto a que se les ha asignado algún tipo de
responsabilidad en el diseño del sistema. No hay, por tanto, un transición directa
entre el Modelo Conceptual y el Diagrama de Clases de Diseño, debido a que
ambos se basan en enfoques completamente distintos: el primero en comprensión
de un dominio, y el segundo en una solución software.
88
Navegabilidad
• A envía un mensaje a B.
• A crea una instancia B.
• A necesita mantener una conexión con B.
Los atributos y los métodos deben tener una visibilidad asignada, que puede ser:
+ Visibilidad pública.
# Visibilidad protegida.
- Visibilidad privada.
También puede ser necesario incluir valores por defecto, y todos los detalles ya
cercanos a la implementación que sean necesarios para completar el Diagrama de
Clases.
89
Bajo Nivel es lo que se denomina Diseño del Sistema. Estas decisiones no se
toman de forma distinta en un desarrollo orientado a objetos a como se llevan a
cabo en un desarrollo tradicional. Por tanto, no se va a entrar en este documento
en cómo se realiza esta actividad.
90