Publicado el 14 de Enero del 2017
1.314 visualizaciones desde el 14 de Enero del 2017
3,8 MB
69 paginas
Creado hace 15a (30/11/2009)
INGENIERÍA DEL SOFTWARE I
Tema 10
Estructura del Sistema
(en desarrollo OO)
Univ. Cantabria – Fac. de Ciencias
Francisco Ruiz y Patricia López
Objetivos del Tema
• Conocer en detalle los elementos que permiten
representar la estructura de un sistema.
• Aprender a realizar diagramas de clases y de objetos
de UML 2.
• Aprender a usar los mecanismos que permiten
extender y particularizar UML.
• Aprender a modelar con ellos diferentes aspectos
estructurales, tanto del dominio del problema
(requisitos-análisis) como del dominio de la solución
(diseño del sistema).
Francisco Ruiz, Patricia López - IS1
10.2
1
Contenido
• Introducción
• Elementos Estructurales
Clase
Atributo
Operación
Responsabilidad
Relaciones
Dependencia
Generalización
Asociación
Restricciones entre Relaciones
Clases Especiales
Interfaces
Realización
Otros Clasificadores
• Diagramas de Clases
• Objetos
Consejos
Identidad y Estado
Objetos prototípicos
• Diagramas de Objetos
• Mecanismos de Extensión
Consejos
Estereotipos
Valores Etiquetados
Anotaciones
Restricciones
Perfiles
Consejos
• Modelado
Vocabulario del Sistema
Distribución de Responsabilidades
Semántica de una Clase
Colaboraciones
Esquemas de Datos
Redes de Relaciones
Líneas de Separación
Instancias
Francisco Ruiz, Patricia López - IS1
10.3
Bibliografía
• Básica
Booch, Rumbaugh y Jacobson (2006): El Lenguaje
Unificado de Modelado. 2ª edición.
Caps. 4-6, 8-11 y 13-14.
• Complementaria
Rumbaugh, Jacobson y Booch (2007): El Lenguaje
Unificado de Modelado. Manual de Referencia. 2ª edición.
Cap. 4.
Hamilton y Miles (2006): Learning UML 2.0.
Caps. 4-6.
Larman, 2003. UML y Patrones: Introducción al análisis y
diseño orientado a objetos, 2ª Edición.
Cap 1
Francisco Ruiz, Patricia López - IS1
10.4
2
Introducción
• Análisis
Centrado en la investigación del problema y sus requisitos
Análisis de requerimientos, análisis del dominio, etc.
• Diseño
Centrado en la solución (software y hardware) que verifica los
requisitos
“Do the right thing (analysis) and do the thing right (design)”
• Implementación
Elaboración del código que implementa la solución diseñada
Francisco Ruiz, Patricia López - IS1
10.5
Introducción
• Análisis orientado a objetos:
Examina los requisitos desde el punto de vista de las clases y objetos encontrados en el vocabulario
del dominio (problema).
• Diseño orientado a objetos:
Diseña el software de una aplicación basada en construirla con una estructura modular en la que los
módulos software se corresponden con abstracciones de los objetos del problema.
• Programación orientada a objetos:
Implementación de los objetos software del diseño en un lenguaje orientado a objetos
Francisco Ruiz, Patricia López - IS1
10.6
3
Introducción
• 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)
Se suele representar mediante diagramas de clases, y
opcionalmente, diagramas de objetos.
Francisco Ruiz, Patricia López - IS1
10.7
Introducción
• El Modelado Estructural en OO se puede realizar desde diferentes
puntos de vista (o a diferentes niveles):
Modelo Conceptual o de Dominio
Conceptos del dominio del problema: propiedades, restricciones y
relaciones entre ellos.
Modelo de Análisis
Identifica como clases los conceptos del dominio.
Atributos, asociaciones y operaciones
Modelo de Diseño
Define los módulos software (clases en OO) que se corresponden con las
clases identificadas en la fase de análisis.
Se corresponden a decisiones del diseño (uso de interfaces, patrones de
diseño, estructuras de datos, persistencia).
Modelo de Implementación
Clases que corresponden a una tecnología de implementación (lenguaje
de programación).
Utilizando un lenguaje OO, el mapeado entre el modelo de diseño y el de
implementación es directo en la mayor parte de las clases
Francisco Ruiz, Patricia López - IS1
10.8
4
Introducción
• Modelo Conceptual
Francisco Ruiz, Patricia López - IS1
10.9
Introducción
• Modelo de Análisis
Francisco Ruiz, Patricia López - IS1
10.10
5
Introducción
• Modelo de Diseño
Francisco Ruiz, Patricia López - IS1
10.11
Elementos Estructurales
• En el tema 7 ya se han presentado los conceptos
básicos estructurales de orientación a objetos:
Clase
Atributo
Operación
Relaciones (Dependencia, Generalización, Asociación)
Interfaz
• En este tema se presentan aspectos complementarios
de su uso con UML.
Francisco Ruiz, Patricia López - IS1
10.12
6
Elementos Estructurales - Clase
• Las Clases son el principal elemento para el
modelado estructural en OO (y por tanto en UML).
Sirven para identificar las “cosas” importantes desde una
visión particular.
Constituyen el vocabulario del sistema que se modela.
Cada una de ellas tiene ciertas propiedades y un
comportamiento.
• Una clase representa el ámbito de definición de un
conjunto de objetos =>
Cada objeto pertenece a una clase.
Los objetos se crean por instanciación de las clases.
Francisco Ruiz, Patricia López - IS1
10.13
Elementos Estructurales - Clase
• Las características básicas de las clases UML
Nombre, Atributos, Operaciones
• Se complementan con otras características
avanzadas:
Visibilidad de atributos y operaciones.
Alcance de atributos.
Multiplicidad de clases y atributos.
Valor inicial y modificabilidad de atributos.
Tipo de las operaciones.
• Sirven para refinar la definición de las clases
conforme avanza el proyecto.
Francisco Ruiz, Patricia López - IS1
10.14
7
Elementos Estructurales - Clase
• Cuando se modela no hay que contemplar todo el detalle de las clases
(abstracción de modelado):
Al dibujar una clase no hay que mostrar todos los atributos y operaciones.
Se especifica con puntos suspensivos (...) que hay más atributos u
operaciones.
Se utilizan estereotipos como categoría descriptiva para organizar atributos y
operaciones.
Si se suprime un compartimento, o se muestra vacío, no quiere decir que no
tenga elementos.
AgenteFraudes
<<constructor>>
nuevo()
nuevo(p:Política)
<<procesamiento>>
procesar(s:Siniestro)
...
<<consultar>>
esSospechoso(s:Siniestro)
esFraudulento(s:Siniestro)
<<utilidades>>
validarSiniestro(s:Siniestro)
Francisco Ruiz, Patricia López - IS1
10.15
Elementos Estructurales - Atributo
• Una Propiedad (Property) en UML es una característica
estructural (structuralfeature) de un clasificador que
especifica información acerca del estado del clasificador.
• En UML 2 los atributos (de tipo Property) de una clase
agrupan tanto a atributos como a asociaciones.
En el resto de la presentación se exponen por separado
• Además de su nombre, para un atributo se pueden
especificar otras características, según la siguiente sintaxis:
[<visibilidad>] [‘/’] <nombre> [‘:’<tipo>] [‘[‘<multiplicidad>’]’]
[‘=‘<valor inicial>]
[‘{‘<modificador> [‘,’<modificador>]*’}’]
Donde
<nombre> es el único campo obligatorio
‘/’ significa que es un atributo derivado
<modificador> representa un modificador que se aplica al atributo.
Francisco Ruiz, Patricia López - IS1
10.16
8
Elementos Estructurales - Atributo
• Ejemplos de Atributos:
origen
+ origen
origen : Punto
nombre : String [0..1]
origen : Punto = (0,0)
id : Integer {readOnly}
/ edad : Integer
nombre
visibilidad y nombre
nombre y tipo
nombre, multiplicidad y tipo
nombre, tipo y valor inicial
nombre, tipo y modificador
nombre y tipo (atributo derivado)
Persona
edad = fechaActual - fechaNacimiento
/edad: Integer
fechaNacimiento : Date
Francisco Ruiz, Patricia López - IS1
10.17
Elementos Estructurales - Atributo
• La Visibilidad es común para atributos y
operaciones.
Sirve para ocultar los detalles de implementación
(encapsulación) y mostrar sólo aquellas características
necesarias para llevar a cabo las responsabilidades de un
clasificador.
Esta ocultación de información es esencial para construir
sistemas sólidos y flexibles.
Francisco Ruiz, Patricia López - IS1
10.18
9
Elementos Estructurales - Atributo
• UML 2 tiene cuatro niveles de
visibilidad:
public (+): Cualquier clasificador
externo puede utilizar la
característica.
protected (#): Sólo el propio
clasificador y sus descendientes
pueden usarla.
private (-): Sólo el propio
clasificador puede utilizarla.
package (~): Sólo los
clasificadores declarados en el
mismo paquete pueden utilizarla.
• La visibilidad por defecto es pública
BarraHerramientas
# selecciónActual: Herramienta
# contadorHerramienta: Integer
+ elegirElemento(i:Integer)
+ añadirHerramienta(t:Herramienta)
+ quitarHerramienta(i:Integer)
+ obtenerHerramienta(): Herramienta
# comprobarHuerfanos()
- compactar()
~ reconfigurar()
Francisco Ruiz, Patricia López - IS1
10.19
Elementos Estructurales - Atributo
• Una característica (atributo u operación) de una clase (o
clasificador en gen
Comentarios de: INGENIERÍA DEL SOFTWARE I - Tema 10 - Estructura del Sistema (en desarrollo OO) (0)
No hay comentarios