1. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 1
25/02/2023
Tipos de modelado
Unidad 2
Material docente compilado por el docente Ph.D. Franklin Parrales Bravo
para uso de los cursos de Modelamiento de Software
2. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 2
25/02/2023
Objetivo general de la Unidad 2
Caracterizar el proceso de modelado identificando
los factores claves del proceso para definir el
alcance de los proyectos de software.
3. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 3
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
4. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 4
25/02/2023
Fundamentals of Business Process
Management
• Accesible en: http://0-
link.springer.com.fam
a.us.es/book/10.1007/
978-3-642-33143-
5/page/1
• Más información en:
http://fundamentals-
of-bpm.org/
5. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 5
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
6. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 6
25/02/2023
Modelado de procesos de negocios
• Los procesos de negocio son una colección de
eventos, actividades y puntos de decisión
interrelacionados que involucran a varios actores
y objetos y que de forma conjunta llevan a un
resultado que proporciona valor para al menos un
cliente (Dumas et al. 2013).
• Los modelos de procesos de negocio (BPM) son
un instrumento para comprender y analizar las
operaciones de negocio, y para impulsar el diseño
de soluciones de tecnología de información que
soportan la ejecución de procesos de negocio.
7. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 7
25/02/2023
Ejemplos: Procesos
• Order-to-cash: Este es un tipo de proceso realizado por un proveedor, que
comienza cuando el cliente envía una orden para comprar un producto o un
servicio y termina cuando el producto o servicio en cuestión haya sido
entregado al cliente y la cliente haya realizado el pago correspondiente
• Quote-to-order: Este tipo de proceso normalmente precede a un proceso
Order-to-cash. Se inicia desde el momento en que un proveedor recibe una
"Solicitud de Cotización“ de un cliente y termina cuando el cliente en
cuestión coloca una orden de compra en base a la cotización recibida.
• Issue-to-resolution. Este tipo de proceso se inicia cuando un cliente
plantea un problema o asunto, como una queja relacionada con un defecto
en un producto o un problema se encuentra cuando se consume un
servicio. El proceso continúa hasta que el cliente, el proveedor, o
preferiblemente ambos, de acuerdo en que el problema se ha resuelto.
9. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 9
25/02/2023
Procesos y Resultados
• Todo proceso lleva a uno o varios resultados:
– Los resultados positivos producen valor
– Los resultados negativos no producen valor (o lo reducen)
• Ejemplos
– Fallo reparado sin la intervención del técnico
– Fallo reparado con intervención mínima del técnico
– Fallo reparado cubierto totalmente por la garantía
– Fallo reparado cubierto parcialmente por la garantía
– Fallo reparado no cubierto por la garantía
– Fallo no reparado
10. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 10
25/02/2023
Propósitos de modelado de procesos
Process
identification
Conformance and
performance insights
Conformance and
performance insights
Process
monitoring and
controlling
Executable
process
model
Executable
process
model
Process
implementation To-be process
model
To-be process
model
Process
analysis
As-is process
model
As-is process
model
Process
discovery
Process architecture
Process architecture
Process
redesign
Insights on
weaknesses and
their impact
Insights on
weaknesses and
their impact
10
• Comunicación
• Documentación
• Análisis (por ejemplo
simulación)
• Automatización
• Testing
Conceptual
Conceptual
Ejecutable
11. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 11
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
12. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 12
25/02/2023
Business Process Model and Notation
(BPMN)
• OMG standard (nowadays BPMN 2.0)
• Soportado por muchas herramientas:
bpmn.org existen mas de 70 herramientas
• Valido para modelos conceptuales y
ejecutables
13. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 13
25/02/2023
Lecciones aprendidas
Tecnologías de
la Información
Cambio
Proceso
Proporciona
Proporciona
Valor de Negocio
Index Group (1982)
Permite
14. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 14
25/02/2023
BPMN
• BPMN viene de Business Process
Modeling Notation (Notación para el
Modelado de Procesos de Negocio).
• Es un estándar de representación gráfica
de procesos de negocio
• Pretende ser un lenguaje accesible tanto
para desarrolladores como para clientes y
directivos. http://www.bpmn.org/
15. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 15
25/02/2023
Tres niveles de BPMN
• Nivel 1 (Modelado descriptivo): Usa un
subconjunto reducido de elementos de
BPMN y su objetivo es facilitar la definición
de un proceso.
• Nivel 2 (Modelado analítico): Usa toda la
expresividad de BPMN para describir el
proceso de negocio de forma precisa,
incluyendo manejo de excepciones.
• Nivel 3 (Modelado ejecutable): Orientado a la
implementación del proceso de negocio.
15
18. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 18
25/02/2023
Convenciones de nombres
• Actividades: VERBO + NOMBRE (Primera letra
mayúsculas)
– Aprobar orden
• Eventos: NOMBRE + PARTICIPIO (Primera letra
mayúsculas)
– Factura emitida
• Procesos: NOMBRE + ADJETIVO (Minúsculas)
– Gestión de pagos
• Evitar nombres muy largos (< 5 palabras)
• Evitar verbos genéricos (ej. Hacer)
19. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 19
25/02/2023
BPMN…..
• Un modelo de procesos BPMN consiste de
un gráfico de cuatro tipo de elemento :
activity gateway
event sequence
flow
start end
20. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 20
25/02/2023
An order-to-cash: El proceso se desencadena
por la recepción de una orden de compra de
un cliente. Tras la recepción de la orden de
compra se revisa la disponibilidad de stock
para determinar si el artículo solicitado puede
ser atendido. Dependiendo de la disponibilidad
la orden de compra puede ser confirmada o
rechazada. Si el pedido es confirmado, una
factura se emite y los productos solicitados se
envían. El proceso se completa mediante el
archivo de la orden o si el pedido es
rechazado.
Empezaremos el modelado
21. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 21
25/02/2023
• An order-to-cash: El proceso se desencadena por
la recepción de una orden de compra de un
cliente.
• Tras la recepción de la orden de compra se
revisa la disponibilidad de stock para determinar
si el artículo solicitado puede ser atendido.
• Dependiendo de la disponibilidad la orden de
compra puede ser confirmada o rechazada.
• Si el pedido es confirmado, una factura se emite y
los productos solicitados se envían.
• El proceso se completa mediante el archivo de la
orden o si el pedido es rechazado.
Empezaremos el modelado -
Descomposición
22. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 22
25/02/2023
• An order-to-cash:
• El proceso se desencadena por la
recepción de una orden de compra de un
cliente.
• Tras la recepción de la orden de compra
se revisa la disponibilidad de stock para
determinar si el artículo solicitado puede
ser atendido.
• ……
Empezaremos el modelado -
Descomposición
23. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 23
25/02/2023
BPMN Model
Purchase
order
received
Check stock
availability
24. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 24
25/02/2023
• An order-to-cash:
• …….
• Dependiendo de la disponibilidad la orden
de compra puede ser confirmada o
rechazada.
• Si el pedido es confirmado, una factura se
emite y los productos solicitados se envían.
• El proceso se completa mediante el archivo
de la orden o si el pedido es rechazado.
Empezaremos el modelado -
Descomposición
25. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 25
25/02/2023
BPMN Model
start
event
end
event
activity
split gateway
Order-to-cash
Purchase
order
received
end
event
Ship goods
Order
rejected
Order
fulfilled
Archive
order
Check stock
Reject order
Confirm
order
Items in
stock
Items not in
stock
Check stock
availability
Emit
invoice
26. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 26
25/02/2023
Check stock
availability
Reject order
Confirm
order
Emit
invoice
Ship goods
Purchase
order
received
Items in
stock
Items not in
stock
Order
rejected
Order
fulfilled
Archive
order
Ejecución del Modelo de Proceso
The “token game”
Order #1
Order #2
Order #3
27. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 27
25/02/2023
[…] Si la orden es confirmada, una factura es emitida y
los productos solicitados son enviados. El proceso se
termina con el archive de la orden. […]
Ejemplo :Order-to-cash
Volviendo a revisar
Check stock
availability
Reject order
Confirm
order
Emit
invoice
Ship goods
Purchase
order
received
Items in
stock
Items not in
stock
Order
rejected
Order
fulfilled
Archive
order
28. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 28
25/02/2023
Check stock
availability
Reject order
Confirm
order
Emit
invoice
Ship goods
Purchase
order
received
Items in
stock
Items not in
stock
Order
rejected
Order
fulfilled
Archive
order
Check stock
availability
Reject order
Confirm
order
Purchase
order
received
Items in
stock
Items not in
stock
Order
rejected
Order
fulfilled
Archive
order
Emit invoice
Ship goods
Primer intento
split
split join
Order-to-cash
30. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 30
25/02/2023
Gateways
• Nodo exclusivo: el flujo continúa por la primera
alternativa que satisface la condición. Si
ninguna satisface, entonces continúa por la
alternativa que tiene la marca “/”
Condición 1
Condición 2
33. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 33
25/02/2023
Gateways
• Ejecución en paralelo (bifurcación): se usa
cuando dos o más tareas se empiezan a
llevar a cabo concurrentemente
34. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 34
25/02/2023
Gateways
• Ejecución en paralelo (unión): se usa para
postsincronizar dos o más tareas que se han
llevado a cabo concurrentemente. Espera un
token de todas las ramas.
37. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 37
25/02/2023
Check stock
availability
Reject order
Confirm order
Send invoice
Ship goods
Purchase
order
received
Items in
stock
Items not in
stock Order
rejected
Order
fulfilled
Archive
order
Order-to-cash: Revisión del Modelo de
Procesos
XOR-split
AND-split AND-join
37
38. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 38
25/02/2023
Gateways
• Nodo inclusivo: el flujo continúa por todas las
alternativas que satisfacen la condición.
• Inclusive merge: procede cuando todas las
ramas activas terminan.
Condición 1
Condición 2
46. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 46
25/02/2023
When?
Flows
Gateways
Which?
Data / Materials
What?
Tasks
Events
Who?
Organization
Puntos de Vista para el Modelamiento de Procesos
Lanes &
Pools
Data Objects,
Stores
48. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 48
25/02/2023
Order-to-cash: Procesos con lanes
49. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 49
25/02/2023
A Message Flow representa un flujo de información entre dos procesos (Pools).
Message
Message Flow
49
Pool 2
Pool
1
Pool
2
Pool
1
Send
Receive
Send Receive
50. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 50
25/02/2023
Order-to-cash
50
51. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 51
25/02/2023
Which?
Data / Materials
Process Modelling Viewpoints
Data Objects,
Stores
52. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 52
25/02/2023
Nuevamente el proceso: Order-to-
cash
Check stock
availability
Confirm
order
Reject order
Send
invoice
Ship goods
Purchase
order
received
Items not in
stock
Items in
stock
Order
rejected
Order
fulfilled
Archive
order
53. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 53
25/02/2023
Purchase
Order
Invoice
Check stock
availability
Confirm
order
Reject order
Send
invoice
Ship goods
Purchase
order
received
Items not in
stock
Items in
stock
Order
rejected
Order
fulfilled
Archive
order
Modelo con artefactos de información
Purchase
Order
Purchase
Order
[checked]
Purchase
Order
[rejected]
Purchase
Order
[approved]
Purchase
Order
Shipment
notice
Warehouse DB
Orders DB
Purchase
Order
54. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 54
25/02/2023
A Data Object
BPMN Information Artifacts
Emit
invoice
Purchase
order
Invoice
Retrieve client
information
Oracle CRM Client info
A Data Store
55. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 55
25/02/2023
Anotaciones
Quick Note: BPMN Text Annotations
Clear vendor
line items
For blocked invoices
Ship goods
Includes packaging
56. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 56
25/02/2023
BPMN Poster (link in “Readings” page)
57. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 57
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
58. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 58
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
59. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 59
25/02/2023
Diagramas de clases
• Definición
• Clases
• Atributos
• Métodos
• Encapsulamiento/Visibilidad
• Instancia
• Relaciones
60. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 60
25/02/2023
Diagrama de Clases
• Que es?
– Presenta las clases del sistema con sus
relaciones estructurales y de herencia.
• Objetivos
– Representar los aspectos estáticos del
sistema
• Que no hace?
– No representa la dinámica de los objetos
61. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 61
25/02/2023
Diagrama de Clases
62. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 62
25/02/2023
UML – Diagrama de Clases
• Parte central del diseño
• Relación muy cercana con el código final
– Herramientas que generan el esqueleto del
código de forma automática
• Se evitan defectos propios de la conversión manual
• Se describen
– Clases (nombre, atributos, métodos)
– Asociaciones entre clases
– Relaciones de herencia
63. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 63
25/02/2023
Diagrama de Clases
• Muestra las clases e interfaces que componen el
sistema y las relaciones que existen entre ellas
• Muestra aspectos estáticos
• Clase: conjunto de objetos que comparten:
– Atributos
– Operaciones
– Relaciones
– Semántica
• Modelo de Dominio (Conceptual): ayudan a entender los
conceptos del dominio del problema y el vocabulario del mismo. Se
excluyen detalles referentes a la implementación o al lenguaje de
programación.
• Diagramas de clases de implementación: muestran todos los
métodos y atributos necesarios para implementar cada clase. Es un
diagrama dependiente de la implementación y del lenguaje.
Nombre Clase
Atributos
Operaciones
64. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 64
25/02/2023
Elementos de un Diagrama de Clases
• Clases. Describen un conjunto de objetos
con propiedades y comportamientos
comunes.
• Relaciones. Enlaces entre los distintos
elementos de los diagramas.
• Interfases. Conjunto de operaciones de
una clase o paquete visibles desde otras
clases o paquetes.
65. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 65
25/02/2023
UML: diagramas de clases
1
2
push()
release()
1
1
blinkIdx
blinkSeconds()
blinkMinutes()
blinkHours()
stopBlinking()
referesh()
LCDDisplay Battery
load
1
2
1
Time
now
1
Watch
Clase
Asociación
Multiplicidad
Atributo
Operaciones
Los diagramas de clases representan la estructura del sistema
state
PushButton
66. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 66
25/02/2023
Diagramas de clases
• Definición
• Clases
• Atributos
• Métodos
• Encapsulamiento/Visibilidad
• Instancia
• Relaciones
67. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 67
25/02/2023
Clases
• Una clase es la descripción de un conjunto
de objetos con los mismos comportamientos
y propiedades.
• La estructura de una clase esta compuesta
de:
– Los atributos:
• Datos asociados a los elementos y que toman valor al
instanciar objetos de una clase.
– Las operaciones (métodos):
• Funciones o procesos propios de los objetos de una
clase.
68. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 68
25/02/2023
Notación UML para clases
Identificador de la clase,
si es abstracta va en cursiva
atributos
métodos
Rectángulo
longitud
ancho
crearRectangulo
obtenerArea
69. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 69
25/02/2023
Clase Instancia 1 Instancia 2
Perro unPerro
Fido
Sultán
unPerro
nombre
Clases
70. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 70
25/02/2023
Diagramas de clases
• Definición
• Clases
• Atributos
• Métodos
• Encapsulamiento/Visibilidad
• Instancia
• Relaciones
71. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 71
25/02/2023
Atributos
• Un atributo representa una propiedad de una clase.
– Ejemplo: Un persona tiene nombre, edad, etc.
• Los nombres de atributos son únicos dentro de una
misma clase.
• Cada atributo tiene un valor para cada instancia
• En UML:
– La primera letra de un atributo se escribe con minúscula.
– La sintaxis para los atributos en un diagrama UML de
clases es la siguiente:
• visibilidad nombre : tipo de dato
• Ejemplo: + nombre : String
72. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 72
25/02/2023
Clase Instancia 1 Instancia 2
atributo X valor x1 valor x2
Perro unPerro
nombre
peso
Sultán
19 libras
unPerro
Fido
9 libras
Atributos de Clases
73. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 73
25/02/2023
Perro
nombre
piel
peso
edad
estátus
Nombrar o identificar objetos
Describir características
Describir estados
Atributos de Clases
74. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 74
25/02/2023
Atributos
• Una entidad con estructura, comportamiento
o identidad debe ser modelado como una
clase, no como atributo de otra clase.
• Sólo considere atributos que directamente
estén relacionados a una aplicación
particular.
– Obtenga los atributos más importantes primero,
se adicionarán detalles después.
• Asegúrese de dar a cada atributo un nombre
significativo.
75. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 75
25/02/2023
Atributos
• Mostrar sólo tipos primitivos relativamente
“simples” como atributos.
• Las conexiones a otros conceptos se
representarán como asociaciones, no como
atributos.
Atributos
Pago
fecha : Fecha
hora : Hora
cantidad : Dinero
76. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 76
25/02/2023
No utilizar atributos para relacionar conceptos
• ¿Por qué?
Peor
Mejor
Cliente
…
Video
…
Alquila
1 1.. *
Cliente
Vídeos alquilados: Lista de Vídeos
Vídeo
alquilador : Cliente
77. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 77
25/02/2023
¿Cómo encontrar atributos?
• Para encontrar atributos de una clase
preguntarse:
– Qué información necesitamos conocer sobre ese
objeto?
– Qué características necesitamos recordar en el
tiempo?
– Qué dato es importante para soportar las
responsabilidades de la clase en el sistema?
– Algunos atributos podrían ser extraídos del
análisis de los sustantivos y añadidos a la clase
apropiada.
78. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 78
25/02/2023
Diagramas de clases
• Definición
• Clases
• Atributos
• Métodos
• Encapsulamiento/Visibilidad
• Instancia
• Relaciones
79. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 79
25/02/2023
Métodos
• Los métodos, son los procesos que una
clase sabe cómo llevar a cabo. Ejemplo:
cambiar-dirección.
• Un objeto se caracteriza por el
comportamiento que es capaz de mostrar, no
solo por sus atributos.
– En el modelo estático, únicamente se muestra los
nombres de los métodos.
– La información de las operaciones se muestra en
el modelo dinámico.
80. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 80
25/02/2023
Sinónimos de Método
• Operación
• Responsabilidad
• Servicio
• Función
81. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 81
25/02/2023
Clase Instancia 1 Instancia 2
Perro unPerro
atributo X valor x1 valor x2
nombre
peso
Sultán
19 libras
unPerro
Fido
9 libras
operación OPT OPT OPT
sentarse
girar
operaciones de
la clase
operaciones de
la clase
Métodos
82. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 82
25/02/2023
Métodos
• Puede ocurrir que una clase no tenga métodos.
• En UML:
– La primera letra de los nombres de los métodos se
escribe con minúscula.
– Los métodos pueden tener parámetros, y también
pueden retornar valores. La sintaxis para los
métodos en un diagrama UML de clases, es la
siguiente:
• visibilidad nombre (lista-de-parámetros): tipo-dato-a-retornar.
• Ejemplo: #addMessage (m : Message, len : Integer): Status
83. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 83
25/02/2023
Ejemplo de Clase/atributos/métodos
Objetos bicicletas
Abstraídos en
Clase Bicicleta
Atributos
Tamaño de frame
Tamaño de llanta
Material ...
Métodos
Cambio
Mover
Frenar...
84. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 84
25/02/2023
Diagramas de clases
• Definición
• Clases
• Atributos
• Métodos
• Encapsulamiento/Visibilidad
• Instancia
• Relaciones
85. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 85
25/02/2023
Clases: Encapsulación/ Visibilidad
▪ La encapsulación presenta dos ventajas básicas:
– Se protegen los datos de accesos indebidos
– El acoplamiento entre las clases se disminuye
– Favorece la modularidad y el mantenimiento
▪ Los atributos de una clase no deberían ser
manipulables directamente por el resto de objetos
86. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 86
25/02/2023
… Clases: Encapsulación/ Visibilidad
▪ Los niveles de encapsulación están heredados
de los niveles de C++:
– (-) Privado : es el más fuerte. Esta parte es
totalmente invisible (excepto para clases friends en
terminología C++)
– (#) Los atributos/operaciones protegidos están
visibles para las clases friends y para las clases
derivadas de la original
– (+) Los atributos/operaciones públicos son visibles a
otras clases (cuando se trata de atributos se está
transgrediendo el principio de encapsulación)
87. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 87
25/02/2023
… Clases: Encapsulación/ Visibilidad
▪ Ejemplo:
Reglas de visibilidad
+ Atributo público : int
# Atributo protegido : int
- Atributo privado : int
+ "Operación pública"
# "Operación protegida"
- "Operación privada"
88. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 88
25/02/2023
Ejemplo de Encapsulación/ Visibilidad
Persona
- nombre: String
- dirección: String
+getNombre ():String
+setNombre(nombre : String):void
+getDireccion():String
+setDireccion(direccion: String):void
# caminar():void
private
public
protected
89. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 89
25/02/2023
Ejemplo de Encapsulación/ Visibilidad
public class Alumno
{
private String nombre;
private String domicilio;
public Alumno(String n, String d)
{}
public void setNombre (String n)
{}
public String getNombre()
{}
}
UML
Java
Alumno
-nombre:
: String
-domicilio: String
+Alumno (n:String, d:String)
+setNombre(n:String):void
+getNombre():String
90. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 90
25/02/2023
Diagramas de clases
• Definición
• Clases
• Atributos
• Métodos
• Encapsulamiento/Visibilidad
• Instancia
• Relaciones
91. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 91
25/02/2023
Instancia
• Una instancia es un objeto creado a partir
de una clase.
• La clase describe la estructura de la
instancia (información y comportamiento),
mientras que el estado actual de la
instancia es definido por las operaciones
ejecutadas.
92. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 92
25/02/2023
Instancia
Alumno alumno3 = new Alumno(“Jose Lopez”, “Centenario”);
alumno3: Alumno
nombre = Jose Lopez
domicilio = Centenario
alumno2: Alumno
nombre = Abel García
domicilio = Los ceibos
alumno1: Alumno
nombre = Juan Perez
domicilio = Las Peñas
Alumno
-nombre:
: String
-domicilio: String
+Alumno (n:String, d:String)
+setNombre(n:String):void
+getNombre():String
Creación de instancias u objetos a partir de la clase Alumno:
Alumno alumno1 = new Alumno(“Juan Perez”, “Las Peñas”);
Alumno alumno2 = new Alumno(“Abel Garcia”, “Los ceibos”);
93. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 93
25/02/2023
Diagramas de clases
• Definición
• Clases
• Atributos
• Métodos
• Encapsulamiento/Visibilidad
• Instancia
• Relaciones
94. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 94
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
95. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 95
25/02/2023
Modelamiento de Relaciones
• Un objeto por si solo no presenta
funcionalidad. Los objetos contribuyen al
comportamiento de un sistema
colaborando con otros.
• Son necesarias las relaciones para dar
significado y propósito a los objetos.
• Las relaciones entre objetos pueden ser
estáticas o dinámicas
96. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 96
25/02/2023
Centrarse en las asociaciones importantes
Vídeo
...
1
1..*
1 Política de préstamos
...
Cliente
...
Asociación importante
Necesito recordar
Asociación de poco valor
Es posible, pero ¿y qué?
Alquila
Influido-por
1..*
97. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 97
25/02/2023
Un
ejemplo
Catálogo
Descripción del vídeo
título
Categoría artículo
Alquiler de vídeo
Hora límite
1..* Fecha de devolución
Hora de devolución
Pago en efectivo
cantidad : Dinero
Vídeo
ID
1
Carnet de socio
ID
Fecha inicio
1
1
1
1..*
1
*
1
1
1
*
1
*
Transacción de alquiler
fecha
Política de préstamos
Cargo alquiler por día
Cargo alquiler por día extra
1
1..*
*
1..*
1
1
Videoclub
dirección
nombre
teléfono
Cliente
dirección
nombre
teléfono
1
0..1
1
*
1
1
Pagos-por-retrasos
Pago-por
Inicia
Alquila
Alquila-de Almacena
Posee-un
Mantiene
Define
Descrito-por
Determina-cargo-alquiler
Registra-alquiler-de
*
Tiene
1
1
1..*
98. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 98
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
99. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 99
25/02/2023
Relaciones Dinámicas
• Los objetos están relacionados por sus
interacciones.
• Pertenecen a los modelos dinámicos.
• También conocidas como:
colaboraciones, interacciones.
100. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 100
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
101. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 101
25/02/2023
Relaciones Estáticas
• Las relaciones estáticas representan
relaciones estructurales entre objetos de
diferentes clases.
• Las relaciones estáticas también se las
conoce como asociaciones o enlaces.
• Las asociaciones representan relaciones
entre clases. Ejemplo: Persona trabaja
en compañía.
102. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 102
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
103. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 103
25/02/2023
Enlaces y Asociaciones
• Los enlaces y las asociaciones son lo más
significativo para establecer relaciones entre
objetos y clases.
• Las relaciones son usualmente llamadas
asociaciones cuando se aplican a clases, y
enlaces cuando son aplicadas a objetos.
• Un enlace es una conexión física o
conceptual entre instancias de objetos. Un
enlace es una instancia de una asociación.
Un objeto colabora con otros objetos a través
de sus enlaces con éstos.
104. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 104
25/02/2023
Enlaces y Asociaciones
• Una asociación describe un grupo de
enlaces con estructura común y semántica
común. Todos los enlaces en una
asociación conectan objetos de la misma
clase.
• Las asociaciones son intrínsecamente
bidireccionales. Por ejemplo: Una
persona trabaja para una compañía, una
compañía emplea a una persona.
105. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 105
25/02/2023
Asociación
asociación
Clase
Atributos
Métodos
Clase
Atributos
Métodos
106. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 106
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
107. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 107
25/02/2023
Asociaciones
• Las asociaciones tienen los siguientes
componentes:
– Nombre
– Rol
– Multiplicidad
108. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 108
25/02/2023
Asociaciones (Nombre)
Trabaja para
Persona Compañía
Persona Compañía
Es empleado Es empleador
nombre
roles
Una asociación tiene una etiqueta (nombre) que describe su
significado.
109. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 109
25/02/2023
Asociaciones (Roles)
• Algunas veces se establecen roles en cada
lado de la asociación. El uso de nombres de
roles es opcional, pero es más fácil y menos
confuso asignar nombres de roles en lugar
de nombres de asociaciones. Por ejemplo:
empleado y empleador.
• Los nombres de roles son necesarios para
asociaciones entre dos objetos de la misma
clase. Por ejemplo: jefe y trabajador
distinguen a los empleados participantes en
la asociación administra.
110. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 110
25/02/2023
Asociaciones (Multiplicidad)
• La multiplicidad indica la cantidad de
objetos que participarán en una relación
dada.
• Una asociación puede ser caracterizada
por la multiplicidad en uno o en ambos
lados de la relación.
• La multiplicidad restringe el número de
objetos relacionados.
111. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 111
25/02/2023
Asociaciones (Multiplicidad)
• Los tipos de multiplicidad son:
– (1): Cada instancia de una clase está relacionada con
exactamente una instancia de la otra clase.
– (*): Cada instancia de una clase está relacionada con
cero, una o con más instancias de la otra clase.
– (0..1): Cada instancia de una clase está relacionada
con 0 ó 1 instancia de la otra clase.
– (1..*): Cada instancia de una clase está relacionada
con una o más instancias de la otra clase.
– Lista: 0..1, 3..4, 6..*: Cada instancia de una clase
está relacionada con cualquier número de instancias
de clase menos con 2 ó 5.
112. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 112
25/02/2023
A B
1
Una A siempre se asocia con una B
País Ciudad Capital
1
Vuelo Capitán
Cheque Beneficiario
1
1
Ejemplo de Asociaciones
113. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 113
25/02/2023
A B
1..*
Una A siempre se asocia con una o más B
Continente País
1..*
Compañía Persona
País Ciudad
1..*
1..*
Ejemplo de Asociaciones
114. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 114
25/02/2023
A B
0..1
Una A siempre se asocia con ninguna o con una B
Escritor Agente
0..1
Ejemplo de Asociaciones
115. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 115
25/02/2023
A B
*
Una A siempre se asocia con ninguna, con una o con más B
Persona Compañía
*
Ejemplo de Asociaciones
116. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 116
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
117. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 117
25/02/2023
Clase de Asociación
• Algunas veces una clase está relacionada
más cercanamente a la asociación entre
otras dos clases que con cualquier otra
clase.
• Ejm: Una cuenta está relacionada a la
asociación entre una persona y un banco.
• Es ventajoso modelar una asociación como
una clase cuando los enlaces pueden
participar en asociaciones con otros objetos
o cuando los enlaces están sujetos a
operaciones.
118. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 118
25/02/2023
Clase de Asociación
• Las clases de asociación permiten añadir
atributos, operaciones y otras
características a las asociaciones.
Persona Compañía
Empleo
salario, cargo
119. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 119
25/02/2023
Persona Banco
Cuenta
número de cuenta
estatus {A,I}
balance
calcular balance
depósito
retiro
cliente de
Ejemplo de Clase de Asociación
120. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 120
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
121. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 121
25/02/2023
Asociaciones circulares
• Una asociación podría ser circular si:
– Una instancia de la clase esta relacionada
con otra instancia(s) de la misma clase.
• Esta asociación se modela como una asociación
que apunta de regreso a la misma clase.
• Nombre de roles son muy útiles para clarificar esta
asociación.
A
122. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 122
25/02/2023
Ejemplo de Asociación circular
Persona
*
1
trabajador
supervisor
123. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 123
25/02/2023
Asociaciones múltiples
• Asociaciones múltiples (diferentes) podrían ser
modeladas entre las mismas dos clases.
• Cada asociación tiene su propio nombre, rol y
multiplicidad.
• Los roles son muy útiles para clarificar las
asociaciones.
– Ejm: Entre un cliente de un club de vídeo y un vídeo.
pueden existir dos asociaciones: rentado y reservado.
– Ejm: Entre la clase usuario y directorio, cada
directorio tiene exactamente un usuario que es un
propietario, y muchos usuarios quienes están
autorizados a usar el directorio.
124. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 124
25/02/2023
r1 *
A B
a3
a1
a2
a5
a4
b1
b2
b3
b4
b5
r2
r1
r1
r1
r1
r2
r2
0..1
Ejemplo de Asociación múltiple
125. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 125
25/02/2023
Vic Jones
Tom Lee
Dora Mesa
Liz Taylor
tiene rentado
Joe Fernández
María Nato
The Wizard of OZ
Guerra de las Galaxias
Casa Blanca
Gone with the wind
Police Academy
The Sound of Music
Ben Hur
tiene rentado
tiene rentado
tiene rentado
tiene reservado
Cliente
club de vídeo Video
tiene rentado
tiene reservado
0..1
*
*
*
Ejemplo de Asociación múltiple
126. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 126
25/02/2023
Ejemplo de asociaciones múltiples
Estudiante Seminario
toma *
1..*
ayuda
*
0..1
ayudante
estudiante
127. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 127
25/02/2023
Ejemplo: Entre la clase usuario y directorio, cada directorio tiene
exactamente un usuario que es un propietario, y muchos usuarios
quienes están autorizados a usar el directorio.
Usuario Directorio
propietario
usuario autorizado
Luis Rossi
José Mieles
Fabián Aguirre
Letty Medina
C:TRABAJOS
C:PRUEBASDIA1
*
*
*
Ejemplo de asociaciones múltiples
128. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 128
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
129. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 129
25/02/2023
Restricciones en las asociaciones
• Las restricciones son condiciones que
especifican limitaciones en las asociaciones,
es decir, limita la participación de los objetos,
a aquellos que cumplen con la condición.
• Con las restricciones se provee mayor
precisión en la información del modelo.
• Una restricción en una asociación entre la
clase A y la clase B quiere decir que: Para
cada enlace entre las instancias de A y B, la
condición señalada por la restricción es
verdadera.
130. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 130
25/02/2023
Restricciones en las asociaciones
Las restricciones pueden ser implícitas o explícitas:
• Implícitas: Las características de la notación en el
modelo implican la restricción. La multiplicidad
restringe una asociación. Esta restringe el número de
objetos relacionados a un objeto dado.
– Ejm: Los iconos que muestran multiplicidad en las
asociaciones, especifican restricciones en el número de
enlaces que podrían existir para las instancias de las
clases relacionadas.
– 0..1: cero o una instancia
• Explícitas: Las restricciones explícitas en el modelo,
generalmente se las especifican con llaves “{ }”.
– Ejm: Restricción entre persona y licencia de conducir.
– {edad del conductor no menor de 18}
131. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 131
25/02/2023
Restricción Implícita
Por cada instancia de A, existen: 0, una, o muchas
instancias de B y
Por cada instancia de B, existen: una o más instancias de
A
A B
r
1..*
*
132. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 132
25/02/2023
Restricción Explícita
Por cada enlace que exista entre una instancia de A y una
instancia de B, la condición en la restricción es
verdadera
A B
relación
{restricción}
133. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 133
25/02/2023
Ejemplo de Restricciones Explícitas
LicenciaConducir
Persona
nombre
dirección
edad
edad mínima
numero de licencia
fecha de caducidad
estatus
{edad de persona no es menor
que la edad mínima de la
licencia de conducir}
tiene
134. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 134
25/02/2023
Restricciones en las Asociaciones
• {or}: Una clase tiene múltiples asociaciones
con otra clase (o con otras dos clases), pero
cada una de las instancias de la clase,
participan en una cualquiera de las
asociaciones, pero no en las dos
• {subconjunto}: se dan cuando una clase
tiene dos asociaciones con otra clase y los
enlaces de una asociación son un
subconjunto de los enlaces de la otra.
135. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 135
25/02/2023
A B
r1
r2
C
{or}
Ejemplo de Restricción OR
{or}
Cliente
club de vídeo Video
tiene rentado
tiene reservado
0..1
*
*
*
136. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 136
25/02/2023
Restricción Subconjunto
a3
a1
a2
a5
a4
b1
b2
b3
b4
b5
r1
r1
r1
r1
r2
r2
A B
{subset}
r1
r2
r1
*
*
137. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 137
25/02/2023
es miembro de
es director de
Persona Comité
{subset}
1..*
Ejemplo de Restricción Subconjunto
A B
r1
r2
{subconjunto}
138. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 138
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
139. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 139
25/02/2023
Agregación de Relaciones
• Las agregaciones son un tipo especial de asociación,
que describen una abstracción lógica de la relación
“parte-todo” o “una-parte-de” en la cual los objetos
que representan los componentes de algo son
asociados con un objeto que representa el ensamblaje
completo. Los componentes son parte del agregado
• Se indican con frases como “tiene”, “contiene” o “es
parte de”.
– Una mano tiene 5 dedos
– Un archivador contiene cajones
– Un teclado es parte de una computadora
• Pueden tener multiplicidad / condicionamiento en el
lado de la parte.
140. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 140
25/02/2023
A B
agregado parte
Agregación de Relaciones
• La agregación puede o no denotar contención física.
– La relación entre un aeroplano se compone de alas,
motores, tren de aterrizaje, etc. denota contención física
– La relación entre un accionista y sus acciones; no requiere
contención física.
• Puede tener un número arbitrario de niveles, esto es,
una agregación con componentes (partes) y
subcomponentes (subpartes).
• La agregación es dibujada igual que la asociación,
excepto por un pequeño diamante que indica el
agregado al final de la relación.
141. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 141
25/02/2023
Agregación de Relaciones
• La agregación tiene algunas consideraciones:
– La parte sólo puede existir si el agregado (el todo)
existe. Cuando el todo es eliminado, son eliminadas
también todas las partes.
– Los clientes deben acceder o comunicarse con las
partes a través del agregado.
– El agregado debe proveer la interfase para permitir a
un objeto cliente acceder o comunicarse con las
partes.
– Los clientes pueden tener relación con las partes.
Sin embargo, estas relaciones deben ser
establecidas y removidas a través del agregado.
142. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 142
25/02/2023
Agregación de Relaciones
• Para decidir entre asociación o agregación,
responder las siguientes preguntas:
– Usaría usted la frase parte de o está compuesto
de?
– Son algunas operaciones en el todo
automáticamente aplicadas a sus partes?
– Son algunos valores de atributos propagados
desde el todo a todos o algunas partes?
– El estado del todo cambia con el estado de su
parte?
143. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 143
25/02/2023
B es parte de A
o
A tiene una B
Modelamiento de Agregaciones
A
B
C contiene cero
o
más instancias de D
C
D
*
144. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 144
25/02/2023
Ejemplos de Agregación
Mesa
Pata
Partes
Agregado (el todo)
1..*
Compañía
Departamento
*
145. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 145
25/02/2023
Ejemplos de Agregación
Documento Párrafo Sentencia
Computador
Caja del Sist. Mouse Teclado
Monitor
Chasis CPU RAM
1..* 1..*
146. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 146
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
147. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 147
25/02/2023
Composición
• Es un tipo especial de agregación donde el
todo es dueño de la parte, por todo el ciclo
de vida de esta.
• En una composición un objeto parte
solamente puede pertenecer a un todo al
mismo tiempo.
• El todo es responsable de la creación y
destrucción de sus partes.
• La integridad del todo se ve afectada, cuando
se elimina una de las partes.
148. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 148
25/02/2023
Ejemplo de Composición
Ventana
Frame
*
149. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 149
25/02/2023
Ejemplo de Agregación y Composición
Polígono
Punto
Estilo
color
Círculo
radio
3..*
150. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 150
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
151. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 151
25/02/2023
Navegabilidad
• La navegación dentro de una asociación
es bidireccional a menos que se
especifique lo contrario.
• A veces es necesario limitar la navegación
a una sola dirección.
Usuario Clave
dueño
152. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 152
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
153. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 153
25/02/2023
Generalización y Herencia
• La generalización es un tipo de relación entre
una clase general (superclase) y una clase
más específica (subclase).
• Este tipo de relación es jerárquica
• Las clases más específicas (subclases)
heredan los atributos y los métodos de las
clases más generales.
• Las subclases pueden añadir nuevas
operaciones y nuevas variables de instancia.
154. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 154
25/02/2023
Generalización y Herencia
• La herencia define una relación entre clases, en la
que una clase comparte la estructura de
comportamiento definida en una o más clases.
• Una misma operación de una superclase puede
comportarse de forma distinta en las subclases.
(Polimorfismo).
• Una clase puede tener cero, uno o más padres.
• Cuando una clase no tiene padres y tiene uno o
más hijos, se la llama clase base.
• Cuando una clase no tiene ningún hijo, se la llama
clase hoja.
155. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 155
25/02/2023
Herencia
• La herencia indica una relación “es un tipo de"
– La herencia es una relación entre clases
– Las nuevas clases añaden especialización a las
existentes
Músico
Violinista
Clase base
Clase derivada
Generalización
Especialización ¿Es éste un buen
ejemplo de
herencia ?
156. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 156
25/02/2023
Generalización y Herencia
• Semánticamente, la herencia denota una relación “es
un o una” o “es un tipo de”. Por ejemplo: un oso “es
un tipo de” mamífero, una casa “es un” tipo de bien
mueble, una rosa “es una” flor, una motocicleta “es un
tipo de” vehículo.
• Se ha considerado a la herencia como sinónimo de
rehúso de código. Sin embargo el más importante
uso de herencia, es la simplificación conceptual que
viene de reducir el número de características
independientes en un sistema.
• Cuando una clase tiene un solo padre, se dice que
usa herencia simple.
• Cuando una clase tiene varios padres se dice que usa
herencia múltiple.
157. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 157
25/02/2023
Notación UML para la Generalización
A
B
Generalización
Especialización
B es un tipo de A
158. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 158
25/02/2023
Ejemplo de Generalización
Rectángulo
dibujar
mover
longitud
ancho
Circulo
dibujar
mover
radio
Figura Geométrica
dibujar
mover
color
posición
159. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 159
25/02/2023
Ejemplo de Generalización
Camión
Conductor
Auto Motocicleta
Vehículo registrado a nombre de
*
Pickup Trailer . . .
18 llantas
160. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 160
25/02/2023
unaCuentaBancaria
calcularBalance
deposito
retiro
unaCuentaDeAhorros
unaCuentaCorriente
emitirEstadoDeCuenta
Banco
calcularBalance
calcularBalance
Generalización y Herencia
• Restricciones:
– Desde el punto de vista del cliente de A, no hay
diferencia entre utilizar una instancia de A o de B.
– Sin embargo, instancias de la clase A no pueden ser
sustituidas por instancias de la clase B.
161. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 161
25/02/2023
unaCuentaBancaria
calcularBalance
deposito
retiro
unaCuentaDeAhorros
unaCuentaCorriente
emitirEstadoDeCuenta
Banco
emitirEstadoDeCuenta
emitirEstadoDeCuenta
Generalización y Herencia
162. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 162
25/02/2023
Herencia sencilla y múltiple
• Herencia sencilla: derivadas de una clase
base
• Herencia múltiple: derivadas de dos o más
clases base
Instrumento de
cuerda
Violín
Instrumento
musical
Instrumento de
cuerda
Con teclas
Violín tiene una
sola clase base
directa
Instrumento de cuerda
tiene dos clases base
directas
163. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 163
25/02/2023
Herencia Múltiple
• Se da cuando una clase tiene más de una
clase padre.
• Una subclase hereda los atributos y
métodos de todas las clases padres.
• Smalltalk y C++ soportan herencia
múltiple, mientras que Java no.
164. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 164
25/02/2023
Ejemplo de Herencia Múltiple
RelojDigital RelojAnalógico
RelojDisplayDoble
165. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 165
25/02/2023
• Generalización
• Una generalización da lugar al
polimorfismo entre clases
de una jerarquía de
generalizaciones:
• Un objeto de una subclase
puede sustituir a un objeto
de la superclase en cualquier
contexto. Lo inverso no es
cierto.
166. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 166
25/02/2023
¿Qué es el polimorfismo?
• El nombre del método reside en la clase base
• Las implementaciones del método residen en
las clases derivadas
ImpuestoBase
CalcularImpuesto( )
ImpuestoProvincial
CalcularImpuesto( )
ImpuestoCiudadano
CalcularImpuesto( )
167. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 167
25/02/2023
Polimorfismo
• El nombre del método reside en la clase base
• Los distintos cuerpos del método residen en
las clases derivadas
Músico de cuerda
AfinaTuInstrumento( )
Guitarrista
AfinaTuInstrumento( )
Violinista
AfinaTuInstrumento( )
Un método sin
cuerpo se llama
operación
168. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 168
25/02/2023
Clases Abstractas
• Una clase abstracta es una generalización
que no tiene instancias directas, pero si sus
especializaciones.
• Una clase concreta es una clase que es
instanciable; esto es, esta puede tener
instancias directas.
• Las clases abstractas organizan
características comunes a algunas clases.
• El uso de clases abstractas puede simplificar
el modelamiento de las clases que participan
en la misma relación con otras clases.
169. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 169
25/02/2023
Notación de Clases Abstractas
Ventana
{abstracto}
minimizar()
maximizar()
Ventana de Windows Ventana de Mac
minimizar()
maximizar()
minimizar()
maximizar()
170. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 170
25/02/2023
Clases base abstractas
• Algunas clases existen sólo para ser clases
base
– No tiene sentido crear instancias de estas
clases
– Estas clases son abstractas
Músico de cuerda
{ abstract }
Guitarrista
« concrete »
Violinista
« concrete »
Se pueden crear instancias
de clases concretas
No se pueden crear instancias
de clases abstractas
171. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 171
25/02/2023
Jerarquías de clases
• Las clases con relaciones de herencia
forman jerarquías de clases
Músico
???
Músico de
cuerda
Violín
???
Instrumento
musical
toca
toca
toca
Violinista
Instrumento de
cuerda
172. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 172
25/02/2023
Jerarquías de Relaciones
Avión militar Avión comercial
Avión de carga Avión de pasajeros
Motor Vendedor de billetes
Avión
1..4
1
Piloto
Reserva
n
1
Línea aérea
Vuelo
n
1
1..2
n
n
1
1
n
n
▪ Las relaciones de Agregación y Generalización forman
jerarquías de clases
173. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 173
25/02/2023
Diagramas de clase: Relaciones
• Modelamiento de Relaciones
– Dinámicas
– Estáticas
• Asociaciones
– Nombre, Rol y Multiplicidad
– Clase de Asociación
– Asociaciones Circulares y Múltiples
– Restricciones en las Asociaciones
• Agregación de Relaciones
• Composición
• Navegabilidad
• Generalización y herencia
• Realización y dependencia
174. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 174
25/02/2023
Interfaces
• Las interfaces contienen sólo operaciones,
no implementación
Músico de cuerda
{ abstract }
Violinista
« concrete »
Músico
« interface »
Nada más que operaciones.
No se pueden crear instancias
de una interfaz.
Puede contener implementación.
No se pueden crear instancias de
una interfaz.
Implementa las operaciones heredadas.
Se pueden crear instancias de una clase
concreta.
175. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 175
25/02/2023
Realización
• Relación semántica entre clasificadores, donde un clasificador
especifica un contrato que otro clasificador garantiza que cumplirá.
• Se pueden encontrar en dos casos:
• Clases o componentes que realizan interfaces. Es decir, implementan
cada uno de los métodos especificados en dicha interfaz.
• Colaboraciones que realizan casos de uso.
Ventana
+abrir()
+cerrar()
+mover()
+dibujar()
<<Interface>>
IVentana
176. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 176
25/02/2023
Dependencia
❖ Una Dependencia modela una relación de uso.
❖ En una dependencia no es necesario especificar un nombre.
A
Dependencia
B
bb1(a1:A)
A
177. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 177
25/02/2023
Realización y dependencia
❖ Una Realización se da entre dos elementos cuando uno de ellos
especifica un contrato y el otro garantiza que se cumple. Por
ejemplo: Una interfaz presenta una relación de realización con
la/s clase/s que la implementa/n.
❖ Una Dependencia modela una relación de uso. En una
dependencia no es necesario especificar un nombre.
Collections
<<Interface>>
Collection
.add()
addAll()
...
LinkedList
Realización
Dependencia
178. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 178
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
179. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 179
25/02/2023
Bibliografía consultada
• Pressman, Roger
S. "Ingeniería del
software." Un
enfoque (2011).
Cap. 21
180. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 180
25/02/2023
Métodos Formales
• “Los métodos formales utilizados en el desarrollo de sistemas
informáticos son técnicas basadas en matemáticas para
describir las propiedades del sistema. Dichos métodos
formales proporcionan marcos dentro de los cuales las
personas pueden especificar, desarrollar y verificar sistemas
de manera sistemática, en lugar de ad hoc.”
The Encyclopedia of Software Engineering [Mar01]
• El problema con las especificaciones convencionales:
– Contradicciones
– Ambigüedades
– Vaguedad
– Incompletitud
– Niveles mixtos de abstracción
181. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 181
25/02/2023
Métodos Formales
• Los métodos formales permiten al ingeniero de
software especificar, desarrollar y verificar un
sistema informático mediante la aplicación de una
notación matemática rigurosa.
• Utilizando un lenguaje de especificación formal,
un método formal proporciona los medios de
especificar un sistema de forma que se aseguren,
de forma sistemática, la consistencia, la
completitud y la corrección.
• Se suelen basar en notaciones matemáticas
similares a las del álgebra de conjuntos y la
lógica.
182. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 182
25/02/2023
Especificación formal
• Las propiedades deseadas — consistencia, integridad
(completeness) y no ambigüedad — son los objetivos de
todos los métodos de especificación.
• La sintaxis formal de un lenguaje de especificación permite
que los requisitos o el diseño se interpreten de una sola
manera, eliminando la ambigüedad que a menudo ocurre
cuando se debe interpretar un lenguaje natural (por ejemplo,
inglés) o una notación gráfica.
– Las facilidades descriptivas de la teoría de conjuntos y la
notación lógica permiten una declaración clara de hechos
(requisitos).
• La consistencia se asegura probando matemáticamente que
los hechos iniciales pueden mapearse formalmente (usando
reglas de inferencia) en declaraciones posteriores dentro de
la especificación.
183. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 183
25/02/2023
Conceptos de métodos formales
• invariante: una condición que se cumple durante la ejecución del
sistema que contiene una colección de datos
– Es decir, define lo que se garantiza que no cambia.
• estado
– En muchos lenguajes formales, como OCL, un sistema puede
estar en uno de varios estados, cada uno representando un
modo de comportamiento observable externamente.
– El lenguaje Z define un estado como los datos almacenados a
los que un sistema accede y altera
• operación—una acción que tiene lugar en un sistema y lee o
escribe datos en un estado
– La precondición define las circunstancias en las que una
operación en particular es válida.
– La poscondición define lo que sucede cuando una operación ha
completado su acción.
• Es decir, define lo que se garantiza que es verdadero hasta completar
una operación. Esto se define por su efecto sobre los datos.
184. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 184
25/02/2023
Ejemplo: tabla simbólica
• Un programa se usa para
mantener una tabla
simbólica.
– Dicha tabla se utiliza
frecuentemente en muchos
tipos diferentes de
aplicaciones.
– Por ejemplo, una tabla que
utiliza un sistema operativo
para contener los nombres
de los usuarios del sistema
• Consiste en una colección
de ítems sin duplicación
alguna.
1) Wilson
2) Simpson
3) Abel
4) Fernandez
5)
6)
7)
8)
9)
10)
MaxIds = 10
185. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 185
25/02/2023
Ejemplo: tabla simbólica
• Suponga que la tabla que se presenta en este ejemplo
contiene no mas de MaxIds nombres.
• Esta afirmación, que coloca una restricción sobre la
tabla, es un componente de una condición conocida
como invariante de datos.
• La invariante de datos que se sostiene para la tabla
simbólica recién analizada tiene dos componentes:
1. que la tabla contendrá no mas de MaxIds nombres
2. que no habrá nombres duplicados en la tabla
• Esto significa que, en cualquier momento en el que se
examine la tabla simbólica durante la ejecución del
sistema, siempre se deben cumplir dichas
condiciones.
186. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 186
25/02/2023
Ejemplo: tabla simbólica
• Así como en el lenguaje Z (el estado de un sistema se
representa por los datos almacenados del sistema), el
estado en el ejemplo es la tabla simbólica
• Operaciones:
– Si el programa de tabla simbólica tiene que ver con
agregar y remover nombres de la tabla simbólica,
entonces se asociara con dos operaciones:
• una operación para add() (agregar) un nombre especifico a la
tabla simbólica y
• otra para remove() (remover) un nombre existente de la tabla.
– Si el programa proporciona la facilidad para comprobar si
un nombre especifico esta contenido en la tabla, entonces
habría una operación que regresaría alguna indicación
acerca de si el nombre esta en la tabla.
187. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 187
25/02/2023
Ejemplo: tabla simbólica
• Pueden asociarse tres tipos de condiciones con las
operaciones: invariantes, precondiciones y
poscondiciones. Por ejemplo:
– Invariante: el numero de elementos de la tabla es siempre es
menor que o igual a MaxIds.
– La precondición para una operación que agrega un nombre a
una tabla simbólica de identificadores de personal es valida solo
si el nombre que se agrega no esta contenido en la tabla y
también si hay menos de MaxIds identificadores de personal en
ella.
– Para la operación add(), la poscondición especificaría
matemáticamente que la tabla aumentó con el nuevo
identificador.
188. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 188
25/02/2023
Métodos Formales
Ventajas
• Se comprende mejor el sistema.
• La comunicación con el cliente
mejora ya que se dispone de una
descripción clara y no ambigua de
los requisitos del usuario.
• El sistema se describe de manera
más precisa.
• El sistema se asegura
matemáticamente que es correcto
según las especificaciones.
• Mayor calidad software respecto
al cumplimiento de las
especificaciones.
• Mayor productividad
Desventajas
• El desarrollo de herramientas que
apoyen la aplicación de métodos
formales es complicado y los
programas resultantes son
incómodos para los usuarios.
• Los investigadores por lo general
no conocen la realidad industrial.
• Es escasa la colaboración entre la
industria y el mundo académico,
que en ocasiones se muestra
demasiado dogmático.
• Se considera que la aplicación de
métodos formales encarece los
productos y ralentiza su
desarrollo.
189. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 189
25/02/2023
Métodos formales
Conceptos
básicos
Fundamentos
matemáticos
básicos
Fundamentos
sobre OO
Proceso de
desarrollo de
software
Modelos
matemáticos
Lógica de primer
orden
Especificaciónes
algebraicas
Redes de Petri
Lógica temporal
Métodos semi-
formales
Métodos
generalistas
Métodos
orientados a
sistemas reactivos
Métodos
orientados a
componentes
Métodos formales
Métodos basados
en lógica de
primer orden
Métodos basados
en formalismos
algebraicos
Métodos basados
en redes de Petri
Métodos basados
en lógica temporal
190. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 190
25/02/2023
Clasificación de métodos Formales
La clasificación más común se realiza en base al modelo matemático
subyacente en cada método, de esta manera podrían clasificarse en:
• Especificaciones basadas en lógica de primer orden y teoría de
conjuntos: permiten especificar el sistema mediante un concepto
formal de estados y operaciones sobre estados. Los datos y
relaciones/funciones se describen en detalle y sus propiedades se
expresan en lógica de primer orden. La semántica de los lenguajes
está basada en la teoría de conjuntos. Los métodos de este tipo
más conocidos son: Z, VDM y B.
• Especificaciones algebraicas: proponen una descripción de
estructuras de datos estableciendo tipos y operaciones sobre esos
tipos. Para cada tipo se define un conjunto de valores y operaciones
sobre dichos valores. Las operaciones de un tipo se definen a
través de un conjunto de axiomas o ecuaciones que especifican las
restricciones que deben satisfacer las operaciones. Métodos más
conocidos: Larch, OBJ, TADs.
191. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 191
25/02/2023
Clasificación de métodos Formales
• Especificación de comportamiento:
– Métodos basados en álgebra de procesos: modelan la
interacción entre procesos concurrentes. Esto ha potenciado su
difusión en la especificación de sistemas de comunicación
(protocolos y servicios de telecomunicaciones) y de sistemas
distribuidos y concurrentes. Los más conocidos son: CCS,CSP y
LOTOS.
– Métodos basados en Redes de Petri: una red de petri es un
formalismo basado en autómatas, es decir, un modelo formal
basado en flujos de información. Permiten expresar eventos
concurrentes. Los formalismos basados en redes de petri
establecen la noción de estado de un sistema mediante lugares
que pueden contener marcas. Un conjunto de transiciones (con
pre y post condiciones) describe la evolución del sistema
entendida como la producción y consumo de marcas en varios
puntos de la red.
192. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 192
25/02/2023
Clasificación de métodos Formales
– Métodos basados en lógica temporal: se usan para
especificar sistemas concurrentes y reactivos. Los sistemas
reactivos son aquellos que mantienen una continua interacción
con su entorno respondiendo a los estímulos externos y
produciendo salidas en respuestas a los mismos, por lo tanto el
orden de los eventos en el sistema no es predecible y su
ejecución no tiene por qué terminar.
193. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 193
25/02/2023
Conceptos matemáticos
• Conjuntos y especificación de conjuntos
constructivos
• Establecer operadores
• Operadores lógicos
– ej.: ∀i, j: N | 𝑖 > 𝑗 ⇒ 𝑖2
> 𝑗2
– que establece que, para cada par de valores
en el conjunto de números naturales, si i es
mayor que j, entonces i2 es mayor que j2.
• secuencias
194. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 194
25/02/2023
Conjuntos y especificación constructiva
• Un conjunto es una colección de objetos o
elementos y se utiliza como piedra angular de
los métodos formales.
– Enumeración
• {C++, Pascal, Ada, COBOL, Java}
• #{C++, Pascal, Ada, COBOL, Java} implica cardinalidad = 5
– La especificación de conjuntos constructivos es
preferible a la enumeración porque permite una
definición sucinta de conjuntos grandes.
• {x, y : N | x + y = 10 (x, y2)}
• *Sucinta significa que está expresado de manera breve,
concisa y precisa
195. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 195
25/02/2023
Operadores de conjuntos
• Se utiliza un conjunto especializado de simbología para
representar operaciones lógicas y de conjuntos.
– Ejemplos
• El operador P se utiliza para indicar la pertenencia a un conjunto. Por
ejemplo, la expresión
– x P X
• Los operadores , y # toman conjuntos como sus operandos. El
predicado
– A , B
• tiene el valor verdadero si los miembros del conjunto A están
contenidos en el conjunto B y tiene el valor falso en caso contrario.
– El operador de unión < toma dos conjuntos y forma un
conjunto que contiene todos los elementos del conjunto
con los duplicados eliminados.
• {File1, File2, Tax, Compiler} < {NewTax, D2, D3, File2} es el conjunto
{File1, File2, Tax, Compiler, NewTax, D2, D3}
196. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 196
25/02/2023
Operadores lógicos
• Otro componente importante de un método formal es la
lógica: el álgebra de expresiones verdaderas y falsas.
Ejemplos:
– V o
– ¬ negación
– => implicación
• La cuantificación universal es una forma de hacer una
declaración sobre los elementos de un conjunto que es
verdadera para cada miembro del conjunto. La cuantificación
universal utiliza el símbolo,. Un ejemplo de su uso es
– ∀i, j: N | 𝑖 > 𝑗 ⇒ 𝑖2
> 𝑗2
• que establece que, para cada par de valores en el conjunto
de números naturales, si i es mayor que j, entonces i2 es
mayor que j2.
197. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 197
25/02/2023
Secuencias
• Las secuencias se designan mediante corchetes
angulares. Por ejemplo, la secuencia de la tabla
simbólica del ejemplo normalmente se escribiría como
– k Jones, Wilson, Shapiro, Estavezl
• Concatenación, X, es un operador binario que forma
una secuencia construida agregando su segundo
operando al final de su primer operando. Por ejemplo,
• k 2, 3, 34, 1l X k12, 33, 34, 200 l = k 2, 3, 34, 1, 12, 33, 34, 200 l
• Otros operadores que se pueden aplicar a las
secuencias son head, tail, front y last.
• head k 2, 3, 34, 1, 99, 101 l = 2
• tail k 2, 3, 34, 1, 99, 101 l = k 3, 34, 1,99, 101 l
• last k 2, 3, 34, 1, 99, 101 l = 101
• front k 2, 3, 34, 1, 99, 101 l = k 2, 3, 34, 1, 99 l
198. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 198
25/02/2023
Lenguajes de especificación formal
• Un lenguaje de especificación formal generalmente se
compone de tres componentes principales:
– una sintaxis que define la notación específica con la que
se representa la especificación
– semántica para ayudar a definir un "universo de objetos"
que se utilizará para describir el sistema
– un conjunto de relaciones que definen las reglas que
indican qué objetos satisfacen adecuadamente la
especificación
• El dominio sintáctico de un lenguaje de especificación formal
a menudo se basa en una sintaxis que se deriva de la
notación estándar de la teoría de conjuntos y el cálculo de
predicados.
• El dominio semántico de un lenguaje de especificación indica
cómo el lenguaje representa los requisitos del sistema.
199. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 199
25/02/2023
Especificación formal: El manipulador de bloques
• El almacén de archivos esta compuesto de bloques de
almacenamiento que se mantienen en un dispositivo de
almacenamiento de archivos.
• Durante la operación de la computadora, se crearan y borraran
archivos, lo que requiere adquisición y liberación de bloques de
almacenamiento.
• Para poder lidiar con esto, el
subsistema de llenado
mantendrá un reservorio de
bloques no utilizados (libres) y
seguirá la pista de los bloques
que estén en uso actual.
• Cuando los bloques se liberan
de un archivo borrado, por lo
general se agregan a una fila de
bloques que esperan para
incorporarse al reservorio de
bloques no utilizados.
200. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 200
25/02/2023
• Los bloques que esperan se mantienen en una fila en la que
cada elemento contiene un conjunto de bloques de un archivo
borrado.
• Para este subsistema, el estado es la colección de bloques
libres, la colección de bloques usados y la fila de bloques
regresados.
• La invariante de datos, que se expresa en lenguaje natural,
es:
– Ningún bloque se marcara como no utilizado y usado al mismo tiempo.
– Todos los conjuntos de bloques que se conservan en la fila serán
subconjuntos de la colección de los bloques actualmente utilizados.
– Ningún elemento de la fila contendrá el mismo numero de bloque.
– La colección de bloques utilizados y bloques que no se usan será la
colección total de bloques que constituyen los archivos.
– La colección de bloques no utilizados no tendrá números de bloque
duplicados.
– La colección de bloques utilizados no tendrá números de bloque
duplicados.
Especificación formal: El manipulador de bloques
201. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 201
25/02/2023
Especificación formal:
El manipulador de bloques
• El manipulador de bloques mantiene un depósito de bloques no utilizados y
también realizará un seguimiento de los bloques que están actualmente en
uso.
• Cuando los bloques se liberan de un archivo eliminado, normalmente se
agregan a una cola de bloques que esperan ser agregados al depósito de
bloques no utilizados.
– Estados
• used, free: P BLOCKS
• BlockQueue: seq P BLOCKS
– Invariante de datos
• used > free =
• used < free = AllBlocks
• i: dom BlockQueue BlockQueue i # used
• i, j : dom BlockQueue i ≠ j => BlockQueue i > BlockQueue j =
– Precondición
– #BlockQueue > 0
– Postcondición
• used' = used head BlockQueue
• free’ = free < head BlockQueue
• BlockQueue' = tail BlockQueue
202. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 202
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
203. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 203
25/02/2023
Object Constraint Language (OCL)
• Una notación formal desarrollada para que
los usuarios de UML puedan agregar más
precisión a sus especificaciones
• Todo el poder de la lógica y las matemáticas
discretas está disponible en este lenguaje
• Sin embargo, los diseñadores de OCL
decidieron que solo se deberían usar
caracteres ASCII (en lugar de la notación
matemática convencional) en las
declaraciones de OCL.
204. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 204
25/02/2023
Object Constraint Language 2.0 (OCL)
• Complemento a UML.
• Lenguaje para escribir expresiones formales acerca de
modelos UML.
• Usos:
• Especificación de invariantes en clases y tipos.
• Especificación de invariantes de tipo para Estereotipos.
• Describir pre- y post-condiciones en Operaciones.
• Describir condiciones de guarda.
• Especificar destinatarios para mensajes y acciones.
• Especificar restricciones en Operaciones.
• Especificar reglas de derivación para atributos.
205. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 205
25/02/2023
Object Constraint Language 2.0 (OCL)
• Invariantes:
• Condiciones o restricciones que deben cumplirse siempre.
• Ejemplo
“El número de empleados debe ser mayor que 50”
context Compañía inv:
self. númeroDeEmpleados > 50
Compañía
context c:Compañía inv suficientesEmpleados:
c.númeroDeEmpleados > 50
{self. númeroDeEmpleados > 50}
206. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 206
25/02/2023
Object Constraint Language 2.0 (OCL)
• Condiciones
• Pre-condiciones o post-condiciones que deben cumplirse en operaciones
• Sintaxis
context NombreTipo::NombreOperación(Param1 : Tipo1, ...
):TipoRetorno
pre parametroOk: param1 < ...
post resultadoOk : result > ...
• Ejemplo
context Persona::nómina(fecha : Date) : Integer
post: result > 650
207. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 207
25/02/2023
Object Constraint Language 2.0 (OCL)
• Valores iniciales y derivados
• Sintaxis
context NombreTipo::NombreAtributo: Tipo
init: –- alguna expresión representando el valor inicial
context NombreTipo::NombreRolAsociación: Tipo
derive: –- alguna expresión representando la regla de derivación
• Ejemplos
context Persona::estaEnParo: Boolean
init: true
derive: if self.empleador->notEmpty()
false
else
true
end if
208. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 208
25/02/2023
Object Constraint Language 2.0 (OCL)
• Definiciones
• Ejemplo
context Persona
def: ingresos : Integer = self.puesto.sueldo->sum()
def: apodo : String = ’Gallito rojo’
• Navegación y combinación de expresiones
• Ejemplos
a) “Los casados tienen al menos 18 años de edad”
context Persona inv:
b) “Una compañía tiene como mucho 50 empleados”
context Companía inv:
self.empleado
- >size() <= 50
self.esposa >notEmpty() implies self.esposa.edad >= 18 and
self.esposo >notEmpty() implies self.esposo.edad >= 18
209. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 209
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
210. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 210
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
211. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 211
25/02/2023
Diagrama de Estados
• Muestra el comportamiento de un objeto representando
los estados en que se puede encontrar y los eventos
que le hace pasar de uno a otro.
• Se utiliza para:
– Modelar el estado interno de una entidad
– Modelar el estado de un caso de uso
• Da una vista dinámica del sistema
• Permite:
– Anidamiento: un estado con subestados
– Estados paralelos: reduce el nro. de estados necesarios en el
modelo
– Condiciones de bifurcación
212. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 212
25/02/2023
Diagramas de estado para objetos con comportamiento dinámico
interesante
BlinkHours
BlinkMinutes
IncrementHrs
IncrementMin.
BlinkSeconds IncrementSec.
StopBlinking
[button1&2Pressed]
[button1Pressed]
[button2Pressed]
[button2Pressed]
[button2Pressed]
[button1Pressed]
[button1&2Pressed]
[button1&2Pressed]
State
Initial state
Final state
Transition
Event
Represent
behavior as
states and
transitions
213. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 213
25/02/2023
Diagrama de Estados – Ejemplo 1
Esperar
Tarjeta
Pedir PIN
ingreso tarjeta
Seleccionar
cuenta y monto
Devolver
Tarjeta
Dar Dinero
Contar Dispensar
Contar
retiro de tarjeta
ingresar PIN[ PIN correcto ]
ingreso PIN [PIN incorrecto]
Verificar
fondos
ingreso cuenta y monto
Dispensar
dinero suficiente
efectivo retirado
contesta[ fondos suficientes ]
fondos insuficientes
214. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 214
25/02/2023
Diagrama de Estados –Ejemplo 2
Wednesday, April 16, 2008
Ciclo de Vida de Incidentes
Versión 0.8
En Desarrollo
En
Análisis
En
Implementación
Asignado Programador
Especificación
Insuficiente
En
Testing
Desarrollado
No hay especificación CP
Reportes Invalidantes
No reproducible
Implementado
Testing
Propuesto En Desarrollo
Tomado por
Analista
En Validación
Verificado
Validado
Cerrado Pendiente Pasaje
a Producción
Pasaje a
Producción
Especificación
Insuficiente
Aprobar
estimación
Faltan CP
En Espera
Cancelado
No reproducible
Duplicado
Estimación no
aprobada
No
Cumple
Especificación
215. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 215
25/02/2023
Contenido
• Modelado de procesos de
negocios
– BPM
– BPMN
– Herramientas de modelado de
procesos de negocios
• Modelado estático del
sistema
– Diagrama de clases
– Lenguajes formales de
especificación
– Lenguaje restringido a objetos
(OCL)
• Modelado del
comportamiento
– Diagramas de estado
– Diagramas de secuencias
– Diagrama de actividades
• Modelado de arquitectura
– Diagramas de componentes
– Diagramas de despliegue
• Metamodelado
– MDA/MDE/Metamodelos
– Lenguajes de Dominio
Específico (DSL)
216. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 216
25/02/2023
Diagramas de secuencia
• El diagrama de secuencia de un sistema muestra
gráficamente los eventos que originan los actores y que
impactan al sistema.
• La creación de los diagramas de secuencia depende de la
formulación de los casos de uso.
• Durante la operación del sistema, los actores generan
eventos, solicitando alguna operación a cambio.
– Ejemplo: cuando un cajero ingresa un código de barras de un
artículo, está pidiendo al sistema de TPV que registre esa
compra. Con este evento se inicia una operación en el sistema.
217. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 217
25/02/2023
Diagramas de Secuencia
• El diagrama de secuencia de UML muestran la
forma en que los objetos se comunican entre si al
transcurrir el tiempo.
• Los diagramas de secuencia, formalmente
diagramas de traza de eventos o de interacción de
objetos, se utilizan con frecuencia para validar los
casos de uso.
• El diagrama muestra:
– Los objetos participando de la interacción con su
línea de vida
– La secuencia de mensajes intercambiados entre
objetos de una secuencia ordenada
– Línea de vida activa
218. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 218
25/02/2023
Antes de hacer el diseño lógico de la aplicación de software, es
conveniente investigar y definir su comportamiento como una "caja negra".
Se estudia el comportamiento del sistema, desde la perspectiva de qué
es lo que hace, y no de cómo lo hace.
Definición: El diagrama de secuencia de un sistema es una representación
que muestra, en determinado escenario de un caso de uso, los eventos
generados por actores externos, su orden y los eventos internos del sistema.
En esta fase del proyecto, el sistema mismo es una caja negra.
Diagramas de secuencia
219. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 219
25/02/2023
Diagramas de secuencia UML
• Utilizado durante el análisis de
requisitos
– Para refinar las descripciones de casos
de uso
– para encontrar objetos adicionales
("objetos participantes")
• Utilizado durante el diseño del
sistema
– para refinar las interfaces del subsistema
• Las clases están representadas
por columnas
• Los mensajes están representados
por flechas
• Las activaciones están
representadas por rectángulos
estrechos
• Las líneas de vida están
representadas por líneas
discontinuas
selectZone()
pickupChange()
pickUpTicket()
insertCoins()
Passenger
TicketMachine
221. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 221
25/02/2023
Diagramas de secuencia
222. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 222
25/02/2023
UML: Diagrama de secuencia
:LCDDisplay
blinkHours()
blinkMinutes()
refresh()
commitNewTime()
:Time
incrementMinutes()
stopBlinking()
:Watch
pressButton1()
pressButton2()
pressButtons1And2()
pressButton1()
:WatchUser
Objeto
Mensaje
Activación
Los diags. de sec. representan el comportamiento como interacciones
Actor
Línea de vida