Este documento presenta una introducción al modelado de software. Explica que el modelado es importante para comprender problemas y diseñar soluciones de software de manera más sencilla. Luego, describe dos enfoques de modelado, el estructurado y el orientado a objetos, y explica conceptos clave como objetos, atributos, relaciones y herramientas de modelado. El objetivo general es comprender la importancia del modelado mediante técnicas para el diseño de software.
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
MOD Unidad 1: Fundamentos de modelado
1. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 1
28/05/2021
Fundamentos de
modelado
Unidad 1
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
28/05/2021
Objetivo general de la Unidad 1
Comprender la importancia del modelado de
software mediante el uso de técnicas para el
diseño de software.
3. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 3
28/05/2021
Contenido
• Introducción al modelado
– Estructurado, Orientado a Objeto
• Conceptos de modelo
– Objeto, Atributos, Relaciones, Cardinalidad / multiplicidad.
• Utilidad de los modelos
– Comprender la realidad y el sistema
– Reducir la complejidad
• Principios de modelado
– Descomposición, Abstracción, Generalización / especialización
– Proyección / puntos de vista
– Uso de enfoques formales (UML)
• Herramientas de modelado
– MagicDraw
– Star UML
– Papyrus UML
– Rational Rose
4. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 4
28/05/2021
Introducción al modelado
• ¿Qué es un modelo?
• Enfoques de modelado
– Estructurado
– Orientado a objetos
5. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 5
28/05/2021
¿Qué es un modelo?
• Un modelo es una abstracción que se construye
para entender y resolver problemas.
6. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 6
28/05/2021
¿Qué es un modelo software?
Es una descripción de un aspecto del sistema, escrita
en un lenguaje bien definido.
7. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 7
28/05/2021
El modelado.
• Simplificación del objeto en el mundo real,
pero que es suficientemente realista como
para dar una idea de lo que ocurrirá en la
realidad y usarse como base del desarrollo.
• Es la primera fase creativa del desarrollo de
proyectos. Se compone de lo qué es análisis
y diseño.
• El modelado parte de lo que es la Ingeniería
de Requerimientos y devuelve un modelo
que puede ser construido (implantable a
través de lenguajes de programación).
8. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 8
28/05/2021
Modelado
• ¿Qué es un modelo?
– Un modelo es una representación de la
realidad. No sólo se modela software sino
prácticamente cualquier actividad.
• ¿Para qué se modela?
– Para resolver un problema más fácilmente
9. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 9
28/05/2021
Importancia del Modelado
• Casi el 80% de los proyectos
de software fallan.
• Nadie construye una casa
sin un plano.
• Actualmente existen muchas
herramientas que auxilian el
proceso de modelado como
Visio, ArgoUML, Rational
Rose, Together, etc.
10. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 10
28/05/2021
Modelado
• Los modelos deben ser más baratos que la
realidad.
• Es más fácil para una persona entender un
diagrama que las líneas de código fuente de
un programa.
• Elaborar los diagramas, al igual que codificar,
consumen tiempo.
• Se deben construir modelos que sean
representativos para que sean útiles
(imaginense hacer un documento de 100
hojas que nadie va a leeer)
11. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 11
28/05/2021
Modelado: Preguntas
• ¿Cuántos diagramas debo crear?
– No existe una respuesta específica.
• ¿Debo hacer diagramas de todo tipo?
– No, sólo se deben utilizar los diagramas que mejor
reflejen el modelado de la problemática.
• ¿Qué tan grande debe de ser un diagrama?
– Entre más grande sea un diagrama mayor es la
confusión.
– Se deben realizar diagramas bien detallados, pero no
tan detallados.
• ¿Cuánto texto debe complementar el modelo?
– Entre menos texto mejor, son como los comentarios
del código fuente: deben ser pocos pero claros.
12. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 12
28/05/2021
Modelado: Recomendaciones
• Algunas recomendaciones para el modelado de
software son:
– No tenga a los programadores esperando los
modelos.
– Trabajar de una macrovista a una microvista
(enfoque Top-Down).
– Se debe documentar en forma económica.
– Si es obvio no se debe de modelar.
– Hacer hincapié en la especialización.
– Utilizar patrones de diseño.
– Rediseñar.
El rediseño es una técnica de reorganización que simplifica el diseño (o
código) de un componente sin cambiar su función o comportamiento.
13. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 13
28/05/2021
Rediseño
• Es el proceso de cambiar un sistema de
software en forma tal que no se altera el
comportamiento externo del diseño, pero sí
se mejora su estructura interna.
• Se examina el diseño existente en busca de
redundancias, elementos de diseño no
utilizados, algoritmos ineficientes o
innecesarios, estructuras de datos mal
construidas o inapropiadas y cualquier otra
falla del diseño que pueda corregirse para
obtener un diseño mejor.
14. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 14
28/05/2021
Rediseño
• Por ejemplo, una primera iteración de diseño
tal vez genere un componente con poca
cohesión (realiza tres funciones que tienen
poca relación entre sí).
• Después de un análisis cuidadoso, se decide
rediseñar el componente en tres
componentes separados, cada uno con
mucha cohesión.
• El resultado será un software más fácil de
integrar, de probar y de mantener.
15. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 15
28/05/2021
Reducir Complejidad (1)
10
9
8
7
6
5
4
3
2
1
20 25 30 35
Complejidad del Diseño del Sistema
Faltas
por
mil
lineas
de
código
16. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 16
28/05/2021
Reducir Complejidad (2)
• Generalidad de la solución
– con menos componentes más simples resolver el
problema
– nivel de abstracción
• Adaptabilidad de la solución
– cubrir con una solución distintos problemas
particulares
17. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 17
28/05/2021
Introducción al modelado
• ¿Qué es un modelo?
• Enfoques de modelado
– Estructurado
– Orientado a objetos
18. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 18
28/05/2021
Topología de un sistema
estructurado
Topología de un sistema orientado a objetos
Modelado Estructurado vs O-O
19. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 19
28/05/2021
Introducción al modelado
• ¿Qué es un modelo?
• Enfoques de modelado
– Estructurado
– Orientado a objetos
20. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 20
28/05/2021
Modelado estructural
• El modelado estructural se ocupa de
desarrollar un modelo del diseño que
muestre la estructura dinámica; es decir,
llamadas a funciones.
• El objetivo del diseñador debe ser derivar
unidades de diseño que sean altamente
cohesivas y poco acopladas.
• En esencia, un diagrama de flujo de datos se
convierte en un diagrama de estructura.
21. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 21
28/05/2021
Descomposición estructural
Nivel Superior
Primer Nivel de
descomposición
Segundo Nivel de
descomposición
Todo método de diseño abarca un tipo de descomposición a partir de una
descripción de alto nivel de los elementos claves del sistema, y creando
visiones a niveles inferiores para ver como las características y funciones
del sistema se acomodaran en conjunto.
22. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 22
28/05/2021
Diseño descendente (Top-down)
• Permite abordar problemas complejos
• Descomponer el problema grande en varios
pequeños
– Módulos independientes
– Procedimientos, funciones y bloques de código
Modularidad
Función
F1
Función
F2
Procedimiento
P1
Programa
Principal
23. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 23
28/05/2021
Modelado Estructurado
• En análisis estructurado se utiliza la técnica
de:
– Diagrama de Flujo: para especificar procesos,
– Diagrama Entidad-Relación: para especificar
datos
– Diagramas de transición de estados: para control.
– Diagramas de contexto o de Flujo de Datos Nivel
1 para indicar arquitectura.
• Para el modelado de datos se recomienda
definir todos los objetos (entidades) y definir
sus atributos.
24. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 24
28/05/2021
Introducción al modelado
• ¿Qué es un modelo?
• Enfoques de modelado
– Estructurado
– Orientado a objetos
25. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 25
28/05/2021
Modelamiento Orientado a Objetos
• Los modelos orientados a objeto describen
los sistemas de información desde un punto
de vista ontológico.
26. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 26
28/05/2021
Descomposición O.O.
• Se descompone el sistema en un conjunto
de objetos que se comunican.
• Representación de datos y operaciones
asociadas se encapsulan en un objeto.
• Herencia, polimorfismo, sobrecarga de
operadores, enlace dinámico.
27. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 27
28/05/2021
Ventajas y Desventajas del Modelado OO
• Ventajas
– La implementación de los objetos puede ser
cambiada sin afectar a otros objetos.
– Promueve la reutilización de componentes.
– Muchos objetos representan entidades de la
realidad por lo que es fácil entender la estructura
del sistema.
• Desventajas
– Para usar servicios se debe conocer el nombre
de la interface de otro objeto.
– Los cambios en las interfaces afectan a todos los
objetos que la usan.
28. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 28
28/05/2021
Ejemplo de cambios de interface
Figura Geométrica
calcularArea(double par1)
Círculo
calcularArea(double par1)
29. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 29
28/05/2021
Ejemplo de cambios de interface
Figura Geométrica
calcularArea(double par1)
Círculo
calcularArea(double par1)
Rectángulo
calcularArea(double par1)
30. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 30
28/05/2021
Ejemplo de cambios de interface
Figura Geométrica
calcularArea(double par1,
double par2)
Círculo Rectángulo
calcularArea(double par1,
double par2)
calcularArea(double par1,
double par2)
31. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 31
28/05/2021
Contenido
• Introducción al modelado
– Estructurado, Orientado a Objeto
• Conceptos de modelo
– Objeto, Atributos, Relaciones, Cardinalidad / multiplicidad.
• Utilidad de los modelos
– Comprender la realidad y el sistema
– Reducir la complejidad
• Principios de modelado
– Descomposición, Abstracción, Generalización / especialización
– Proyección / puntos de vista
– Uso de enfoques formales (UML)
• Herramientas de modelado
– MagicDraw
– Star UML
– Papyrus UML
– Rational Rose
32. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 32
28/05/2021
Conceptos de modelo
• Objeto
• Clase
• Atributos
• Métodos
• Relaciones
• Cardinalidad / multiplicidad
33. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 33
28/05/2021
Qué es un objeto?
• Un objeto es una abstracción de un conjunto
de cosas del mundo real de tal forma que:
– Todos los elementos del conjunto (las instancias)
tienen las mismas características.
– Todas las instancias están sujetas a y conforman
las mismas reglas.
Mundo Real Software
Abstracción
34. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 34
28/05/2021
Objetos
▪ Objeto = unidad atómica que encapsula
estado y comportamiento
▪ La encapsulación en un objeto permite
una alta cohesión y un bajo acoplamiento
▪ Un objeto puede caracterizar una entidad
física (coche) o abstracta (ecuación
matemática)
35. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 35
28/05/2021
… Objetos
▪ El Modelado de Objetos permite representar el ciclo
de vida de los objetos a través de sus interacciones
▪ En UML, un objeto se representa por un rectángulo
con un nombre subrayado
Otro
Objeto
Un Objeto
Otro
Objeto
más
36. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 36
28/05/2021
… Objetos
▪ Ejemplo de varios objetos relacionados:
Felipe
Juan
Cuenta Corriente 101
Cuenta Corriente 114
Banco de Valencia
37. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 37
28/05/2021
… Objetos
▪ Objeto = Identidad + Estado + Comportamiento
▪ El estado está representado por los valores de los
atributos
▪ Un atributo toma un valor en un dominio concreto
Un coche
Azul
979 Kg
70 CV
...
38. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 38
28/05/2021
Qué es un objeto?
• Es una entidad tangible que muestra algún
comportamiento bien definido.
• Posee funcionalidad (operaciones que son
capaces de hacer y mensajes que son capaces
de responder).
• Características de los objetos: Identidad,
Clasificación, estado, comportamiento, herencia,
Polimorfismo (se verán más adelante).
– Estas características pueden ser usadas en forma
independiente, pero juntas se complementan.
39. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 39
28/05/2021
Identidad
Variable Dirección
unCredito 10001324
unDebito 54647875
unaCuenta 87896545
unaCuentadeAhorros 87020486
Una tabla de símbolos
caballo
Doris
Residencia de Doris
Mi Computadora
Una bicicleta roja
cuenta bancaria
antena parabólica
Cada objeto tiene su propia identidad inherente
40. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 40
28/05/2021
▪ Oid (Object Identifier)
Cada objeto posee un oid. El oid establece la identidad
del objeto y tiene las siguientes características:
❖Constituye un identificador único y global para cada
objeto dentro del sistema
❖Es determinado en el momento de la creación del objeto
❖Es independiente de la localización física del objeto, es
decir, provee completa independencia de localización
Identidad
41. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 41
28/05/2021
❖Es independiente de las propiedades del objeto, lo cual
implica independencia de valor y de estructura
❖No cambia durante toda la vida del objeto. Además, un
oid no se reutiliza aunque el objeto deje de existir
❖No se tiene ningún control sobre los oids y su
manipulación resulta transparente
▪ Sin embargo, es preciso contar con algún medio para
hacer referencia a un objeto utilizando referencias del
dominio (valores de atributos)
… Identidad
42. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 42
28/05/2021
Clasificación
(1,3)
(2,2)
(2,1)
(5,2.5)
Vehículo
Punto
Figura
Animal
43. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 43
28/05/2021
Estado
▪ El estado evoluciona con el tiempo
▪ Algunos atributos pueden ser constantes
▪ El comportamiento agrupa las competencias de un
objeto y describe las acciones y reacciones de ese
objeto
▪ Las operaciones de un objeto son consecuencia de
un estímulo externo representado como mensaje
enviado desde otro objeto
44. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 44
28/05/2021
Comportamiento
▪ Ejemplo de interacción:
Otro objeto
Un objeto
Un mensaje
Operacion 1
Operacion 2
45. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 45
28/05/2021
… Comportamiento
▪ Los mensajes navegan por los enlaces, a
priori en ambas direcciones
▪ Estado y comportamiento están
relacionados
▪ Ejemplo: no es posible aterrizar un avión
si no está volando. Está volando como
consecuencia de haber despegado del
suelo
46. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 46
28/05/2021
Qué es un objeto?
• En términos de programación es una
variable.
• Un objeto es una instancia de una clase.
• Los objetos creados a partir de una clase,
tienen una estructura idéntica, pero cada
objeto puede tener valores distintos.
47. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 47
28/05/2021
Conceptos de modelo
• Objeto
• Clase
• Atributos
• Métodos
• Relaciones
• Cardinalidad / multiplicidad
48. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 48
28/05/2021
❖ Una clase es una descripción de un conjunto de objetos que
comparten: atributos, operaciones, relaciones y semántica”.
❖ Una clase define los conceptos que forman parte del dominio del
problema o de la solución.
Dominio del problema:
Conceptos
Dominio de la solución:
Clases
Clase
49. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 49
28/05/2021
Clase
• Una clase describe un conjunto de ejemplares
(objetos) con propiedades y comportamientos
similares.
• Una clase se describe por:
– Nombre
– Interfaz (métodos, mensajes)
– Atributos (datos)
• En término de programación es un tipo de dato
definido por el usuario.
– Equivalente a un TDA. Ej: Rectangulo, Lista, Cola,
NumeroComplejo, etc.
• Las clases son las plantillas a partir de las cuales se
crean los objetos.
50. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 50
28/05/2021
Clases
• Una clase es la descripción de un conjunto de
objetos que comparten los mismos:
– atributos (características)
– métodos (operaciones)
– relaciones
• 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.
51. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 51
28/05/2021
Notación UML para clases
Identificador de la clase,
si es abstracta va en cursiva
atributos
métodos
Rectángulo
longitud
ancho
crearRectangulo
obtenerArea
52. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 52
28/05/2021
Clase Instancia 1 Instancia 2
Perro unPerro
Fido
Sultán
unPerro
nombre
Clases
53. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 53
28/05/2021
Clases y Objetos
Class Template
Objetos
54. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 54
28/05/2021
Conceptos de modelo
• Objeto
• Clase
• Atributos
• Métodos
• Relaciones
• Cardinalidad / multiplicidad
55. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 55
28/05/2021
Atributos
• Un atributo representa una propiedad que es
compartida por todos los objetos de una misma 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
56. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 56
28/05/2021
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
57. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 57
28/05/2021
Perro
nombre
piel
peso
edad
estátus
Nombrar o identificar objetos
Describir características
Describir estados
Clases de Atributos
58. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 58
28/05/2021
¿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.
59. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 59
28/05/2021
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.
60. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 60
28/05/2021
Conceptos de modelo
• Objeto
• Clase
• Atributos
• Métodos
• Relaciones
• Cardinalidad / multiplicidad
61. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 61
28/05/2021
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.
62. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 62
28/05/2021
Sinónimos de Método
– Operación
– Responsabilidad
– Servicio
– Función
63. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 63
28/05/2021
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
64. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 64
28/05/2021
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
65. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 65
28/05/2021
Conceptos de modelo
• Objeto
• Clase
• Atributos
• Métodos
• Relaciones
• Cardinalidad / multiplicidad
66. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 66
28/05/2021
Relaciones entre Clases
▪ Las Relaciones modelan la forma en la que los
elementos estructurales se conectan entre sí.
▪ Los enlaces entre de objetos pueden representarse entre
las respectivas clases
▪ La asociación expresa una conexión bidireccional entre
objetos
▪ Una asociación es una abstracción de la relación
existente en los enlaces entre los objetos
Universidad Estudiante
Univ. de Murcia:Universidad Antonio:Estudiante
Una asociación
Un enlace
67. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 67
28/05/2021
Relación/Asociación
▪ Relaciones/asociaciones: Abstracciones que actúan de
unión entre los elementos.
▪ Formas de relación entre clases:
– Asociación y Agregación (vista como un caso particular de
asociación)
– Generalización/Especialización
– Dependencia y realización
Dependencia
Asociación
Generalización
Realización
Es una relación entre dos elementos, tal que un cambio en uno
puede afectar al otro.
Es una relación estructural que resume un conjunto de enlaces
que son conexiones entre objetos.
Es una relación en la que el elemento generalizado puede ser
substituido por cualquiera de los elementos hijos, ya que
comparten su estructura y comportamiento.
Es una relación que implica que la parte realizante cumple con
una serie de especificaciones propuestas por la clase realizada
(interfaces).
68. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 68
28/05/2021
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
69. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 69
28/05/2021
Una Asociación es una relación estructural fuerte, que indica que los
objetos de una clase forman parte del estado del objeto del otro extremo.
Persona Empresa
trabaja para
Asociación
Dirección del nombre
Nombre
Relación/Asociación
70. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 70
28/05/2021
En una asociación se puede navegar desde el objeto de una clase hasta
el objeto de la otra clase, y viceversa, si no se indica el sentido de
navegación.
Un rol es la cara que la clase de un extremo de la asociación presenta a la
clase del otro extremo
Persona Empresa
Navegabilidad
Nombre de rol
.empleado .patron
Navegabilidad de una Asociación
71. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 71
28/05/2021
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.
Persona
*
1
trabajador
supervisor
72. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 72
28/05/2021
Generalización/especialización
(Herencia)
• Es un mecanismo para
compartir atributos y
métodos entre clases.
• Permite definir una clase hija
(subclase) a partir de una
clase padre (base,
superclase).
• Las subclases heredan los
atributos y métodos de las
superclases.
Mamífero
Perro Gato
Poodle
PastorAlemán
- colorOjo:String
+ getcolorOjo: String
- frecLadrido:int
+ ladrar::void
- frecMaullido:int
+maullar::void
+ esAleman::void + esFrances::void
73. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 73
28/05/2021
Agregación y Composición
➢ Una Agregación (relación “parte-de”) es una asociación en la que
una de las clases representa el “todo” y la/s otra/s la/s parte/s.
Puzle Pieza
Agregación
1 1..*
El todo
La parte
➢ Una Composición es una forma de agregación con una fuerte
relación de pertenencia y vida de las partes con el todo.
Banco Cuenta
1 1..*
Composición
74. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 74
28/05/2021
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
75. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 75
28/05/2021
Conceptos de modelo
• Objeto
• Clase
• Atributos
• Métodos
• Relaciones
• Cardinalidad / multiplicidad
76. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 76
28/05/2021
Multiplicidad/cardinalidad
➢ La Multiplicidad indica cuantos objetos de un extremo de la
asociación pueden conectarse con un objeto del otro extremo.
Sintaxis: valorMinimo..valorMaximo (por defecto es 1)
Ejemplos:1 = Uno, 0..1 = Cero o Uno, 0..* = Cero o muchos,
1..* = Uno o muchos,
0..1,3..4,6..* = Cualquier número excepto 2 y 5
Persona Empresa
Multiplicidad
.empleado .patron
1..* 0..1
77. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 77
28/05/2021
▪ Especificación de multiplicidad/cardinalidad
(mínima...máxima)
1 Uno y sólo uno
0..1 Cero o uno
M..N Desde M hasta N (enteros naturales)
* Cero o muchos
0..* Cero o muchos
1..* Uno o muchos (al menos uno)
▪ La multiplicidad mínima >= 1 establece una
restricción de existencia
Multiplicidad/cardinalidad
78. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 78
28/05/2021
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 Multiplicidad/cardinalidad
79. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 79
28/05/2021
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 Multiplicidad/cardinalidad
80. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 80
28/05/2021
A B
0..1
Una A siempre se asocia con ninguna o con una B
Escritor Agente
0..1
Ejemplo de Multiplicidad/cardinalidad
81. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 81
28/05/2021
A B
*
Una A siempre se asocia con ninguna, con una o con más B
Persona Compañía
*
Ejemplo de Multiplicidad/cardinalidad
82. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 82
28/05/2021
Contenido
• Introducción al modelado
– Estructurado, Orientado a Objeto
• Conceptos de modelo
– Objeto, Atributos, Relaciones, Cardinalidad / multiplicidad.
• Utilidad de los modelos
– Comprender la realidad y el sistema
– Reducir la complejidad
• Principios de modelado
– Descomposición, Abstracción, Generalización / especialización
– Proyección / puntos de vista
– Uso de enfoques formales (UML)
• Herramientas de modelado
– MagicDraw
– Star UML
– Papyrus UML
– Rational Rose
83. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 83
28/05/2021
Utilidad del modelado
¿Por qué no escribo código
directamente?
Sería lo ideal pero ....
.... necesitamos escribir modelos,
aunque la mayoría de desarrolladores
todavía no practican el modelado
84. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 84
28/05/2021
Modelado de software
Construcción de Software
Ingeniería de requerimientos
Diseño
y
Arquitectura
de
Software
85. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 85
28/05/2021
¿Se obtienen beneficios con el
modelado?
Un coste en formación y tiempo
¿Una mejora de la productividad?
¿Una mejora de la calidad del software?
¿Por qué la mayoría de
empresas no practican el
modelado?
86. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 86
28/05/2021
¿Por qué se construyen modelos?
• Reducir la complejidad del sistema.
• Comunicar las ideas a otros.
• Visualización.
• Nos permite probar la entidad física antes
de construirla.
• Los modelos documentan las decisiones
que tomamos.
87. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 87
28/05/2021
Comprensión de la realidad
• Simplificación del objeto en el mundo real,
pero que es suficientemente realista como
para dar una idea de lo que ocurrirá en la
realidad y usarse como base del
desarrollo.
88. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 88
28/05/2021
Utilidad de los modelos
• Comprender la realidad
– Un modelo es una simplificación de la realidad
• Comprender el sistema
– Un modelo permite comprender mejore el sistema
que estamos desarrollando: sus elementos y sus
relaciones
• Reducir la complejidad
– Un modelo permite reducir la complejidad de
entender sistemas complejos en su totalidad
• Comunicar con otros
– Un modelo permite la comunicación entre los
desarrolladores y los clientes
89. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 89
28/05/2021
Contenido
• Introducción al modelado
– Estructurado, Orientado a Objeto
• Conceptos de modelo
– Objeto, Atributos, Relaciones, Cardinalidad / multiplicidad.
• Utilidad de los modelos
– Comprender la realidad y el sistema
– Reducir la complejidad
• Principios de modelado
– Descomposición, Abstracción, Generalización / especialización
– Proyección / puntos de vista
– Uso de enfoques formales (UML)
• Herramientas de modelado
– MagicDraw
– Star UML
– Papyrus UML
– Rational Rose
90. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 90
28/05/2021
Principios de modelado
• Descomposición
• Abstracción
• Generalización / especialización
• Polimorfismo
• Proyección / puntos de vista
• Uso de enfoques formales
91. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 91
28/05/2021
Diseño para el cambio
• ¿Qué puede cambiar?
– Algoritmos
• requerimientos de desempeño, escala
– Representación de los datos
• requerimientos de desempeño, escala
• cambios en interfaces
– equipos externos
– ambiente social
• Para reducir el impacto de los cambios:
Modularizar
92. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 92
28/05/2021
Descomposición
• La descomposición es un concepto de diseño que
sugiere que cualquier problema complejo puede
manejarse con más facilidad si se subdivide en
elementos susceptibles de resolverse u
optimizarse de manera independiente.
• Un problema es una característica o
comportamiento que se especifica en el modelo
de los requerimientos para el software.
• Al separar un problema en sus piezas más
pequeñas y por ello más manejables, se requiere
menos esfuerzo y tiempo para resolverlo.
93. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 93
28/05/2021
Descomposición
• Si para dos problemas, p1 y p2, la
complejidad que se percibe para p1 es
mayor que la percibida para p2, entonces
se concluye que el esfuerzo requerido
para resolver p1 es mayor que el
necesario para resolver p2.
• Como caso general, este resultado es
intuitivamente obvio. Lleva más tiempo
resolver un problema difícil.
94. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 94
28/05/2021
Descomposición
• También se concluye que cuando se combinan
dos problemas, con frecuencia la complejidad
percibida es mayor que la suma de la complejidad
tomada por separado.
– Esto lleva a la estrategia de divide y vencerás, pues
es más fácil resolver un problema complejo si se
divide en elementos manejables.
– Esto tiene implicaciones importantes en relación con
la modularidad del software.
• La modularidad es dividir el software en
componentes con nombres distintos y abordables
por separado, en ocasiones llamados módulos,
que se integran para satisfacer los requerimientos
del problema.
95. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 95
28/05/2021
Descomposición: Jerarquía de módulos
• Dividir sucesivamente, obteniendo niveles
– Se formará una jerarquía de módulos
– Los de mas bajo nivel
• Resuelven problemas más pequeños y
• Contienen mas detalle
• Hasta que los módulos de nivel inferior
– Sean sumamente simples
– Y solo contengan funciones y procedimientos
– Que resuelven problemas independientes y
pequeños
96. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 96
28/05/2021
Descomposición
• Según el punto de vista de la descomposición, sería
posible concluir que si el software se dividiera en forma
indefinida, el esfuerzo requerido para desarrollarlo ¡sería
despreciable por pequeño!
• Desafortunadamente, hay otras fuerzas que entran en
juego y que hacen que esta conclusión sea (tristemente)
inválida.
– El esfuerzo (costo) de desarrollar un módulo
individual de software disminuye conforme aumenta
el número total de módulos
– Sin embargo, a medida que se incrementa el número
de módulos, el esfuerzo (costo) asociado con su
integración también aumenta
97. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 97
28/05/2021
Descomposición
Deben hacerse módulos, pero con cuidado para permanecer en
la cercanía de M. Debe evitarse hacer pocos o muchos
módulos.
Región de
costo mínimo
M
Costo
del
esfuerzo
Costo de integración
Costo total del software
Costo por módulo
Número de módulos
98. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 98
28/05/2021
Principios de modelado
• Descomposición
• Abstracción
• Generalización / especialización
• Polimorfismo
• Proyección / puntos de vista
• Uso de enfoques formales
99. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 99
28/05/2021
Abstracción
• Visión simplificada de una realidad de la
que sólo consideramos determinados
aspectos esenciales.
• Consiste en enfocarse en lo esencial.
• El propósito es limitar el universo.
100. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 100
28/05/2021
Abstracción procedimental
• En un diseño descendente, un modulo
– Equivale a una “caja negra” y ejecuta una tarea
determinada
• Cada “caja negra” o procedimiento
– Nos interesa lo que hace, no como lo hace
– Puede conocer otras cajas negras y usarlas
• Un procedimiento/modulo ya escrito
– Se puede usar sin saber como esta escrito
– Basta con su nombre y una descripción
101. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 101
28/05/2021
Abstracción OO
• La intención general del modelamiento
orientado a objetos (OO) es abstraer
algunas características de sistemas
naturales complejos como son:
– Estado del objeto (Atributos).
– Comportamiento del objeto (Métodos).
– Comportamientos comunes entre objetos
relacionados.
102. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 102
28/05/2021
Abstracción de datos
• Al analizar un problema, podemos centrarnos en:
– Los datos que vamos a necesitar y
– Las operaciones/métodos que se pueden realizar sobre los mismos
– Definirán sus TIPOS DE DATOS ABSTRACTOS o CLASES
• TDAs/Clases
– Los módulos los conocerán y usarán
– Sin interesarles como se escribieron sus operaciones/métodos
– Se pueden implementar usando estructuras de datos/clases
• Para diseñar una solución se deben desarrollar
– Algoritmos y
– TDAs/Clases
103. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 103
28/05/2021
Principios de modelado
• Descomposición
• Abstracción
• Generalización / especialización
• Polimorfismo
• Proyección / puntos de vista
• Uso de enfoques formales
104. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 104
28/05/2021
Herencia
(Generalización/especialización)
• Es un mecanismo para compartir atributos y
métodos entre clases.
• Permite definir una clase hija (subclase) a
partir de una clase padre (base, superclase).
• Las subclases heredan los atributos y
métodos de las superclases.
Superclase
Subclase
105. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 105
28/05/2021
• Por la herencia se forman jerarquías de
clases (superclases y subclases).
• La clase hija hereda el interfaz (con la
implementación de las operaciones) y los
atributos.
• Relación “es un”
• Permite la reutilización de código.
Herencia
(Generalización/especialización)
106. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 106
28/05/2021
Ejemplo de Herencia
(Generalización/especialización)
107. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 107
28/05/2021
Ejemplo de Herencia
(Generalización/especialización)
Mamífero
Perro Gato
Poodle
PastorAlemán
- colorOjo:String
+ getcolorOjo: String
- frecLadrido:int
+ ladrar::void
- frecMaullido:int
+maullar::void
+ esAleman::void + esFrances::void
108. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 108
28/05/2021
Herencia
(Generalización/especialización)
Auto
maxFuel
maxNroDePasajeros
modelo
velocidad
acelerar()
desacelerar()
doblarAIzq()
doblarADcha()
Avion
maxAltitud
maxFuel
maxNroDePasajeros
velocidad
nroDeMotores
acelerar()
desacelerar()
descender()
ascender()
ANTES DESPUES
Vehiculo
maxFuel
maxNroDePasajeros
velocidad
acelerar()
desacelerar()
Avion
maxAltitud
nroDeMotores
descender()
ascender()
Auto
modelo
doblarAIzq()
doblarADcha()
superclase
subclases
109. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 109
28/05/2021
Herencia
(Generalización/especialización)
Vehiculo
Auto Avion
public class Vehiculo {
}
public class Auto extends Vehiculo{
}
public class Avion extends Vehiculo{
}
Java
UML
110. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 110
28/05/2021
Herencia
(Generalización/especialización)
• Concepto de tipo: un tipo denota una interfase
particular. Ej.: Ser, Animal, Vegetal, etc.
• Un tipo es un subtipo de otro si su interfaz
contiene la interfase de su supertipo. Ej.: Animal
es un subtipo de Ser y un supertipo de Ave y
Mamifero.
• Diferencia entre los conceptos de clase e
interfase.
– El concepto de clase hace referencia a los atributos y
a las operaciones, junto con su implementación.
– El concepto de interfase hace referencia sólo a los
prototipos de las operaciones visibles.
111. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 111
28/05/2021
Tipos de Herencia
(Generalización/especialización)
• Simple: una clase (clase hija) puede
heredar de otra clase (una clase padre).
• Múltiple: una clase (clase hija) puede
heredar de otras clases padres (tener
varias clases padres).
– No está disponible en todos los lenguajes
(disponible en C++; en Java sólo para la
herencia de interfase).
112. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 112
28/05/2021
Herencia Múltiple
113. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 113
28/05/2021
Herencia Múltiple
Problema de ambigüedad: unVehiculoAnfibio.Desplazarse();
Los lenguajes ofrecen mecanismos para deshacer la ambigüedad (en
C++ => unVehiculoAnfibio.VehiculoTerrestre::Desplazarse()).
114. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 114
28/05/2021
Tipos de Clases
• Clases abstractas
– No pueden ser instanciadas.
– Usadas solamente como superclases.
– Organizan características comunes a algunas clases y
especifican una interfaz común para todas sus subclases.
– Pueden tener métodos abstractos (métodos sin
implementación).
• Clases concretas o comunes
– Pueden ser instanciadas.
– Tiene un comportamiento específico.
– Implementan los métodos abstractos que heredan de las clases
abstractas.
• Clases finales
– Clases especiales que no pueden tener descendencia.
– Únicamente permiten instanciar objetos.
115. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 115
28/05/2021
Tipos de Clases
116. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 116
28/05/2021
Clases Abstractas
• Su objetivo es especificar una interfase común
para todas sus subclases.
• El uso de clases abstractas puede simplificar el
modelamiento de las clases que participan en la
misma relación con otras clases.
• No siempre se pueden encontrar clases
abstractas.
• Deja sin definir una o más operaciones (sólo
declara sus prototipos – no tienen
implementación), que se definirán en subclases.
Estas operaciones se denominan operaciones
abstractas.
117. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 117
28/05/2021
Clases Abstractas
Figura {Abstracto}
Circulo Rectangulo
public abstract class Figura {
...
}
public class Circulo extends Figura{
...
}
public class Rectangulo extends Figura{
...
}
Figura f = new Figura();
118. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 118
28/05/2021
Clases Abstractas
119. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 119
28/05/2021
Principios de modelado
• Descomposición
• Abstracción
• Generalización / especialización
• Polimorfismo
• Proyección / puntos de vista
• Uso de enfoques formales
120. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 120
28/05/2021
• 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.
121. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 121
28/05/2021
Polimorfismo
• Significa que la misma operación/método puede
comportarse diferente en clases distintas.
• El polimorfismo está muy ligado a la herencia.
• Distintas instancias del mismo tipo interpretan el
mismo mensaje en diferentes formas.
• El polimorfismo requiere enlace dinámico
– Enlace dinámico: la llamada se resuelve en tiempo de
ejecución.
– Enlace estático: la llamada se resuelve en tiempo de
compilación
122. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 122
28/05/2021
Ejemplo de Polimorfismo
FiguraGeométrica
Atributo:
area
Método:
ObtenerArea
Atributos:
longitud
ancho
Métodos:
CrearRectangulo
ObtenerArea
Atributos:
radio
ancho
Métodos:
CrearCirculo
ObtenerArea
rectángulo círculo
123. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 123
28/05/2021
Ejemplo de Polimorfismo
método concreto
Figura f = new Rectangulo();
int s = f.obtenerArea();
método abstracto
Rectangulo
+obtenerArea()
Figura {abstracto}
+obtenerArea()
Circulo
+obtenerArea()
Método
abstracto
124. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 124
28/05/2021
Principios de modelado
• Descomposición
• Abstracción
• Generalización / especialización
• Polimorfismo
• Proyección / puntos de vista
• Uso de enfoques formales
125. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 125
28/05/2021
Proyección / puntos de vista
• Durante el desarrollo de un sistema software se requiere que
éste sea visto desde varias perspectivas.
• Diferentes usuarios miran el sistema de formas diferentes en
momentos diferentes.
• La arquitectura del sistema es clave para poder manejar estos
puntos de vista diferentes:
• Se organiza mejor a través de vistas arquitecturales
interrelacionadas.
• Proyecciones del modelo del sistema centradas en un aspecto particular.
• No se requiere una vista que contenga la semántica completa
de la aplicación. La semántica reside en el modelo.
126. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 126
28/05/2021
Proyección / puntos de vista
Las 4 +1 Vistas Arquitecturales (Philippe Krutchen)
Vista de diseño
Vista de
implementación
Vista de
interacción
Vista de
despliegue
Vista de
casos de uso
Lógico Físico
127. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 127
28/05/2021
Proyección / puntos de vista
• Vista de Casos de Uso (Use Case View)
• Captura la funcionalidad del sistema tal y como es
percibido por los usuarios finales, analistas y encargados
de pruebas.
• Describe la funcionalidad en base a casos de uso.
• En esta vista no se especifica la organización real
del sistema software.
• Los diagramas que le corresponden son:
• Aspectos estáticos: diagramas de casos de uso.
• Aspectos dinámicos: diagramas de interacción, de estados y
de actividades.
128. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 128
28/05/2021
Proyección / puntos de vista
• Vista de Diseño (Logical View)
• Captura las clases, interfaces y colaboraciones que
describen el sistema:
• En el dominio del problema
• En el dominio de la solución
• Las elementos que la forman dan soporte a los requisitos
funcionales
• del sistema.
• Los diagramas que le corresponden son:
• Aspectos estáticos: diagramas de clases y de objetos.
También son útiles los diagramas de estructura
compuesta de clases.
• Aspectos dinámicos: diagramas de interacción, de estados y
de actividades.
129. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 129
28/05/2021
Proyección / puntos de vista
• Vista de Interacción (Process view)
• Captura el flujo de control entre las diversas partes del
sistema, incluyendo los posibles mecanismos de
concurrencia y sincronización.
• Abarca en especial requisitos no funcionales como el
rendimiento, escalabilidad y capacidad de
procesamiento.
• Los diagramas que le corresponden son los mismos que
la vista de diseño:
• Aspectos estáticos: diagramas de clases y de objetos.
• Aspectos dinámicos: diagramas de interacción, de estados y
de actividades.
• Pero atendiendo más las clases activas que controlan el
sistema y los mensajes entre ellas.
130. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 130
28/05/2021
Proyección / puntos de vista
• Vista de Implementación (Development View)
• Captura los artefactos que se utilizan para ensamblar y poner
en producción el sistema software real.
• Define la arquitectura física del sistema
• Se centra en:
• La configuración de las distintas versiones de los archivos físicos,
• Correspondencia entre clases y ficheros de código fuente,
• Correspondencia entre componentes lógicos y artefactos físicos.
• Los diagramas que le corresponden son:
• Aspectos estáticos: diagramas de componentes (especialmente
la versión de artefactos) y de estructura compuesta.
• Aspectos dinámicos: diagramas de interacción, de estados y de
actividades.
131. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 131
28/05/2021
Proyección / puntos de vista
• Vista de Despliegue (Physical View)
• Captura las características de instalación y ejecución del
sistema.
• Contiene los nodos y enlaces que forman la topología
hardware
• sobre la que se ejecuta el sistema software.
• Se ocupa principalmente de la distribución de las partes
que forman el sistema software real.
• Los diagramas que le corresponden son:
• Aspectos estáticos: diagramas de despliegue.
• Aspectos dinámicos: diagramas de interacción, de estados y
de actividades.
132. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 132
28/05/2021
Proyección / puntos de vista
• Cada vista puede existir de forma independiente.
• Pero interactúan entre sí:
• Los nodos (vista de despliegue) contienen
componentes (vista de implementación).
• Dichos componentes representan la realización (software
real) de las clases, interfaces, colaboraciones y clases
activas (vistas de diseño y de interacción).
• Dichos elementos de las vistas de diseño e interacción
representan el sistema solución a los casos de uso (vista de
casos de uso) que expresan los requisitos.
133. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 133
28/05/2021
Proyección / puntos de vista
Modelo
Funcionalidad del sistema
Estructura del sistema
(características estáticas)
Comportamiento del sistema
(características dinámicas)
captura
organizado en
•Vista de Casos de Uso (Funcionalidad)
•Vista de Diseño (Arquitectura interna)
•Vista de Interacción (Concurrencia y sincronización)
•Vista de Implementación (Arquitectura externa)
•Vista de Despliegue (Plataforma y distribución)
•Diagramas de Casos de Uso
•Diagramas de Clases
•Diagramas de Objetos
•Diagramas de Secuencia
•Diagramas de Colaboración
•Diagramas de Estado
•Diagramas de Actividad
•Diagramas de Componentes
•……
Vistas Arquitecturales Diagramas
visualizadas en
134. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 134
28/05/2021
Principios de modelado
• Descomposición
• Abstracción
• Generalización / especialización
• Polimorfismo
• Proyección / puntos de vista
• Uso de enfoques formales
135. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 135
28/05/2021
Unified Modeling Language
• Desarrollado en 1997 al fusionar las metodologías de Ivar
Jacobson, Jame Rumbaugh y Grady Booch
• Objetivo: Proveer un lenguaje común que puede ser usado
para el desarrollo de software
• Es el lenguaje estándar para modelar proyectos de
software que permite:
– Visualizar: La comunicación es a través de gráficos
– Especificar: construyendo modelos para el análisis, diseño,
implementación
– Construir: Permite la generación de código a partir de un modelo
UML, y la construcción de un modelo a partir del código (ingeniería
reversa)
– Documentar: Permite la documentación completa de todo el
sistema
• Aprobado como estándar por la OMG en 1997
• Actualmente se encuentra en la versión 2.4.1 (2012)
136. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 136
28/05/2021
Unified Modeling Language
• Diagramas: Disponen un conjunto de elementos,
que representan el modelo desde distintas
perspectivas.
– Ingeniería directa: Es posible generar código a partir de
un modelo UML.
– Ingeniería inversa: Es posible generar un modelo UML a
partir de la implementación.
• En ambos casos se requiere mayor o menor
supervisión, en función de lo buenas que sean las
herramientas usadas.
• UML tiene nueve diagramas fundamentales,
clasificados en dos grupos, uno para modelar la
estructura estática del sistema y otro para modelar
el comportamiento dinámico.
137. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 137
28/05/2021
Diagramas en UML
138. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 138
28/05/2021
Tipos de Diagramas
• Modelo Estático
– Construye y documenta los aspectos estáticos de un sistema.
– Refleja la estructura básica y estable de un sistema software.
– Crea una representación de los principales elementos del
dominio del problema
– Diagramas: Clases, Objetos, componentes y despliegue.
• Modelo Dinámico
– Crea los diagramas que muestran el comportamiento de un
sistema
– Diagramas: Casos de Uso, secuencia, colaboración, estados y
actividades
139. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 139
28/05/2021
Futuro de UML
• UML 2.4
• Extensiones de UML
• SysML - Systems Modeling Language (SysML, www.sysml.org)
• Generación automática de código a partir de modelos
• Model-Driven Engineering (MDE)
• Extendiendo UML mediante perfiles
• MARTE – Modeling and Analysis of Real-Time Embedded Systems
• Entornos avanzados basados en metamodelado
• Eclipse Modeling Framework (EMF)
• Modelado y generación de código en dominios específicos
• Domain-Specific Modeling (DSM, www.dsmforum.org)
140. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 140
28/05/2021
UML tiene tres bloques básicos de construcción, elementos,
relaciones y diagramas.
Elementos: Unidades básicas de construcción, cuatro tipos:
Estructurales: Partes estáticas de los modelos,
representan aspectos conceptuales o materiales.
De comportamiento: Partes dinámicas de los modelos,
representan comportamientos en el tiempo y espacio.
De agrupación: Partes organizativas de los modelos.
De Notación: Partes explicativas de los modelos.
Notación UML
141. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 141
28/05/2021
Elementos estructurales:
Clase
Clase activa
Describe un conjunto de objetos que comparten los
mismos atributos, métodos, relaciones y semántica.
Las clases implementan una o más interfaces.
Se trata de una clase, en la que existe procesos o hilos
de ejecución concurrentes con otros elementos. Las
líneas del contorno son más gruesas que en la clase
“normal”.
Notación UML
142. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 142
28/05/2021
Agrupación de métodos u operaciones que especifican
un servicio de una clase o componente, describiendo su
comportamiento, completo o parcial, externamente visible.
UML permite emplear un círculo para representar las
interfaces, aunque lo más normal es emplear la clase con
el nombre en cursiva.
Define una interacción entre elementos que cooperan
para proporcionar un comportamiento mayor que la
suma de los comportamientos de sus elementos.
Elementos estructurales:
Notación UML
143. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 143
28/05/2021
Describe un conjunto de secuencias de acciones que un
sistema ejecuta, para producir un resultado observable
de interés. Se emplea para estructurar los aspectos de
comportamiento de un modelo.
Parte física y por tanto reemplazable de un modelo, que
agrupa un conjunto de interfaces, archivos de código fuente,
clases, colaboraciones y proporciona la implementación de
dichos elementos.
Elemento físico que existe en tiempo de ejecución y
representa un recurso computacional con capacidad de
procesar.
Elementos estructurales:
Notación UML
Componente
144. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 144
28/05/2021
Elementos de comportamiento:
Comprende un conjunto de mensajes que se intercambian
entre un conjunto de objetos, para cumplir un objetivo
especifico.
Especifica la secuencia de estados por los que pasa un
objeto o una interacción, en respuesta a eventos.
Notación UML
145. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 145
28/05/2021
Elementos de agrupación:
Se emplea para organizar otros elementos en grupos.
Elementos de notación:
Partes explicativa de UML, que puede describir
textualmente cualquier aspecto del modelo.
Notación UML
146. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 146
28/05/2021
Relaciones: Abstracciones que actúan de unión entre los
elementos.
Dependencia
Asociación
Generalización
Realización
Es una relación entre dos elementos, tal que un cambio en uno
puede afectar al otro.
Es una relación estructural que resume un conjunto de enlaces
que son conexiones entre objetos.
Es una relación en la que el elemento generalizado puede ser
substituido por cualquiera de los elementos hijos, ya que
comparten su estructura y comportamiento.
Es una relación que implica que la parte realizante cumple con
una serie de especificaciones propuestas por la clase realizada
(interfaces).
Notación UML
147. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 147
28/05/2021
Modelos en UML
• Modelado de Casos de Uso
– Diagrama de Casos de Uso
• Modelado Estructural
– Diagrama de Clases
• Modelado de Comportamiento
– Diagramas de Interacción: Secuencia y Comunicación
– Diagramas de Estados
• Modelado de flujos de actividades (p.e. Modelo del Negocio)
– Diagramas de actividades
• Modelado Implementación
– Diagrama de Componentes
• Modelado de Despliegue
– Diagramas de Artefactos
– Diagramas de Despliegue
148. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 148
28/05/2021
Modelo
Casos de Usos
Teleoperador Participante
Realizar puja ordinaria
Cancelar puja ordinaria
Rechazar adjudicación
Pujador
Anular anuncio de subasta
Anular edición de subasta
Crear edición de subasta
Administrador
Cerrar edición de subasta
Realizar pago de subasta ordinaria
Notif icar adjudicatario
Sistema
Diagrama de
casos de uso
149. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 149
28/05/2021
Modelos en UML
• Modelado de Casos de Uso
– Diagrama de Casos de Uso
• Modelado Estructural
– Diagrama de Clases
• Modelado de Comportamiento
– Diagramas de Interacción: Secuencia y Comunicación
– Diagramas de Estados
• Modelado de flujos de actividades (p.e. Modelo del Negocio)
– Diagramas de actividades
• Modelado Implementación
– Diagrama de Componentes
• Modelado de Despliegue
– Diagramas de Artefactos
– Diagramas de Despliegue
150. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 150
28/05/2021
Modelado estructural
• Se describen los tipos de objetos de un sistema
y las relaciones estáticas que existen entre
ellos.
– Clases
– Interfaces
– Relaciones de dependencia, realización, generalización
y asociación (agregación, composición)
– También pueden incluir paquetes.
• Un diagrama de clase es una representación
gráfica de un modelo estructural.
151. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 151
28/05/2021
Modelado estructural
• Diferentes perspectivas.
• Modelado Conceptual
– Conceptos del dominio del problema: atributos, restricciones
y relaciones entre ellos.
• Modelo del Análisis
– Clases que corresponden a conceptos del dominio
– Atributos y métodos
• Modelo de Diseño
– Incluye clases que corresponden a decisiones del diseño
• Modelo de Implementación
– Clases que corresponden a un lenguaje de programación
152. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 152
28/05/2021
Modelo
Conceptual Diagrama
de clases
153. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 153
28/05/2021
Modelo
Análisis
Diagrama
de clases
154. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 154
28/05/2021
Cuenta Domiciliacion
0..n
1
Ahorro Corriente
1 0..n
Operacion
Periodica
IteradorCuenta Modelo de
diseño
Diagrama
de clases
155. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 155
28/05/2021
Modelos en UML
• Modelado de Casos de Uso
– Diagrama de Casos de Uso
• Modelado Estructural
– Diagrama de Clases
• Modelado de Comportamiento
– Diagramas de Interacción: Secuencia y Comunicación
– Diagramas de Estados
• Modelado de flujos de actividades (p.e. Modelo del Negocio)
– Diagramas de actividades
• Modelado Implementación
– Diagrama de Componentes
• Modelado de Despliegue
– Diagramas de Artefactos
– Diagramas de Despliegue
156. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 156
28/05/2021
c:Cliente
:Transaccion
p:ProxyODBC
<<create>>
establecerAcciones
establecerValores
exito
<<destroy>>
establecerValores
tiempo
Línea de vida
Foco de
control
Modelo de
Comportamiento
Diagrama de
secuencia
157. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 157
28/05/2021
Modelo de
Comportamiento
: Sistema
as :
AnuncioSubasta
pujas :
PujaOrdinaria
adj :
Adjudicacion
: ArticuloConcreto
Se crean tantas adjudicaciones
como pujas ganadoras haya.
Cada adjudicación se asocia
con un ArticuloConcreto, una
puja adjudicataria y con la
subasta.
:
ControladorAnuncios
Se recorre la colección de
pujas obteniendo las pujas
ganadoras (consideramos
que la colección está
ordenada de mayor a menor
valor de puja).
adjudicaciones :
Adjudicacion
: EdicionSubasta
int numAjudicaciones =
Minimo(pujas.length(),
articulos.length());
: AnuncioSubasta
5. numAdjs = calcularAdjudicaciones()
1. cerrarEdicionSubasta(es)
6. [1..numAdjs]* pg := get()
8. [1..numAdjs]* adj := crear(as, pg, a)
7. [1..numAdjs]* a:= get()
9. [1..numAdjs]* add(adj)
2. cerrar()
4. * cerrar()
3. * as := get()
Diagrama de
comunicación
158. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 158
28/05/2021
Espera Venta Introduccion
Productos
Espera
Pago
introducirProducto
introducirProducto
Terminar Venta
Autorizacion
Pago
efectuar Pago Efectivo
efectuar Pago Tarjeta
manejarRespuesta
Diagrama
de estado
Modelo de
Comportamiento
159. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 159
28/05/2021
Modelos en UML
• Modelado de Casos de Uso
– Diagrama de Casos de Uso
• Modelado Estructural
– Diagrama de Clases
• Modelado de Comportamiento
– Diagramas de Interacción: Secuencia y Comunicación
– Diagramas de Estados
• Modelado de flujos de actividades (p.e. Modelo del Negocio)
– Diagramas de actividades
• Modelado Implementación
– Diagrama de Componentes
• Modelado de Despliegue
– Diagramas de Artefactos
– Diagramas de Despliegue
160. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 160
28/05/2021
Modelo del
Negocio
Diagrama de
actividades
Gestión de fondosbibliotecarios
Director Bibliotecario Usuario
Catalogar
nuevo libro
Registrar
préstamo
Leer libro
Registrar
devolución
[libro OK]
Retirar
libro
[libro deteriorado]
161. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 161
28/05/2021
Modelos en UML
• Modelado de Casos de Uso
– Diagrama de Casos de Uso
• Modelado Estructural
– Diagrama de Clases
• Modelado de Comportamiento
– Diagramas de Interacción: Secuencia y Comunicación
– Diagramas de Estados
• Modelado de flujos de actividades (p.e. Modelo del Negocio)
– Diagramas de actividades
• Modelado Implementación
– Diagrama de Componentes
• Modelado de Despliegue
– Diagramas de Artefactos
– Diagramas de Despliegue
162. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 162
28/05/2021
Diagrama de
componentes
Modelo de
implementación
163. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 163
28/05/2021
Modelos en UML
• Modelado de Casos de Uso
– Diagrama de Casos de Uso
• Modelado Estructural
– Diagrama de Clases
• Modelado de Comportamiento
– Diagramas de Interacción: Secuencia y Comunicación
– Diagramas de Estados
• Modelado de flujos de actividades (p.e. Modelo del Negocio)
– Diagramas de actividades
• Modelado Implementación
– Diagrama de Componentes
• Modelado de Despliegue
– Diagramas de Artefactos
– Diagramas de Despliegue
164. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 164
28/05/2021
hola.java
hola.html
hola.jpg
<<artifact>>
HolaMundo.class
HolaMundo
<<manifest>>
<<manifest>>
Modelo de
Despliegue
Diagrama de
artefactos
165. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 165
28/05/2021
Modelo de
Despliegue Diagrama de
despliegue
166. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 166
28/05/2021
Contenido
• Introducción al modelado
– Estructurado, Orientado a Objeto
• Conceptos de modelo
– Objeto, Atributos, Relaciones, Cardinalidad / multiplicidad.
• Utilidad de los modelos
– Comprender la realidad y el sistema
– Reducir la complejidad
• Principios de modelado
– Descomposición, Abstracción, Generalización / especialización
– Proyección / puntos de vista
– Uso de enfoques formales (UML)
• Herramientas de modelado
– MagicDraw
– Star UML
– Papyrus UML
– Rational Rose
167. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 167
28/05/2021
Herramienta MagicDraw UML
Es una herramienta CASE desarrollada por No Magic.
La herramienta es compatible con el estándar UML 2.3,
desarrollo de código para diversos lenguajes de
programación (Java, C++ y C#, entre otros) así como
para modelar datos
168. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 168
28/05/2021
Herramienta StarUML
StarUML es una herramienta UML de MKLab. El
software se licencia bajo una versión modificada de GNU
GPL hasta 2014, cuando se lanzó una versión 2.0.0
reescrita para pruebas beta bajo una licencia
propietaria.
169. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 169
28/05/2021
Herramienta Papyrus UML
Es una herramienta UML 2 de código abierto basada en Eclipse
y bajo licencia EPL. Papyrus se puede utilizar como herramienta
independiente o como complemento de Eclipse. Proporciona
soporte para lenguajes específicos de dominio y SysML.
Papyrus está diseñado para ser fácilmente extensible ya que se
basa en el principio de los perfiles UML.
170. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 170
28/05/2021
Herramienta Rational Rose
La aplicación IBM® Rational Rose® es una
herramienta de desarrollo y modelado de
componentes gráficos que utiliza el Lenguaje
unificado de modelado (UML) estándar del sector.
171. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 171
28/05/2021
Herramienta diagrams.net
diagrams.net es un software de diagramas en línea
gratuito para hacer diagramas de flujo, diagramas de
procesos, organigramas, UML, ER y diagramas de
red.
172. Modelamiento de Software Carrera de Software
Ph.D. Franklin Parrales 172
28/05/2021
Fundamentos de
modelado
Unidad 1
Final de la unidad