Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin: Modelado de SI Breve Tour por UML El Paradigma Orientado a Objetos Fundamentos del Modelado OO Captura de Requisitos Modelado de Interacciones Modelado de la Estructura del Sistema Diagramas de Estados Modelado de Componentes Modelado de Distribucin Proceso de Desarrollo de SW con UML Conclusiones
2
Introduccin: Modelado de SI
Puede hacerlo una sola persona Requiere : Modelado mnimo Proceso simple Herramientas simples
Construccin de un rascacielos
Construida eficientemente y en un tiempo razonable por un equipo Requiere : Modelado Proceso bien definido Herramientas ms sofisticadas
5 6
Claves en Desarrollo de SI
Notacin
envo
Herramientas
Proceso
10
MV promueve la reutilizacin
Mltiples Sistemas
Componentes Reutilizados
11
12
Qu es UML?
UML = Unified Modeling Language Un lenguaje de propsito general para el modelado orientado a objetos Documento OMG Unified Modeling Language Specification UML combina notaciones provenientes desde:
Modelado Orientado a Objetos Modelado de Datos Modelado de Componentes Modelado de Flujos de Trabajo (Workflows)
13
Situacin de Partida
Diversos mtodos y tcnicas OO, con muchos aspectos en comn pero utilizando distintas notaciones Inconvenientes para el aprendizaje, aplicacin, construccin y uso de herramientas, etc. Pugna entre distintos enfoques (y correspondientes gurs)
14
Historia de UML
Comenz como el Mtodo Unificado, con la participacin de Grady Booch y Jim Rumbaugh. Se present en el OOPSLA95 El mismo ao se uni Ivar Jacobson. Los Tres Amigos son socios en la compaa Rational Software. Herramienta CASE Rational Rose
Historia de UML
2001 ? 2000 1999 1998 Nov 97
UML aprobado por el OMG
UML 1.2
15
16
MCI Systemhouse Microsoft ObjecTime Oracle Corp. Platinium Technology Sterling Software Taskon Texas Instruments Unisys
Jacobson Meyer
Pre- and Post-conditions
UML
State Charts
Harel
Embly
Singleton classes
Wirfs-Brock Fusion
Responsabilities Operation descriptions, message numbering
17
18
Aspectos Novedosos
Definicin semi-formal del Metamodelo de UML Mecanismos de Extensin en UML: Stereotypes Constraints Tagged Values
Permiten adaptar los elementos de modelado, asignndoles una semntica particular Ver UML V1.3 pgina 2-67
19
Inconvenientes en UML
Definicin del proceso de desarrollo usando UML. UML no es una metodologa Falta integracin con respecto de otras tcnicas tales como patrones de diseo, interfaces de usuario, documentacin, etc. Ejemplos aislados Monopolio de conceptos, tcnicas y mtodos en torno a UML
21
Perspectivas de UML
UML ser el lenguaje de modelado orientado a objetos estndar predominante los prximos aos Razones:
Participacin de metodlogos influyentes Participacin de importantes empresas Aceptacin del OMG como notacin estndar Herramientas que proveen la notacin UML Edicin de libros Congresos, cursos, camisetas, etc.
22
Evidencias:
Diagramas de UML
Use Case Use Case de Diagrams Diagramas Use Case Diagrams Use Case de Casos de Uso Diagramas Diagrams Diagrams Secuencia Scenario Scenario Diagrams Diagramas Diagrams de Colaboracin Scenario Scenario de Diagramas Diagrams Diagrams Estados State State de Diagrams Diagramas Diagrams Clases State State de Diagrams Diagramas Diagrams Objetos State State Diagrams Diagramas de Diagrams Componentes
Component Component Diagramas Diagrams Diagrams
Modelo
Diagramas de Actividad
de Distribucin
Paquetes en UML
Los paquetes ofrecen un mecanismo general para la organizacin de los modelos agrupando elementos de modelado Se representan grficamente como:
Nombre de paquete
Paquetes en UML
Cada paquete corresponde a un subconjunto del modelo y contiene, segn el modelo, clases, objetos, relaciones, componentes y diagramas asociados Un paquete puede contener otros paquetes, sin lmite de anidamiento pero cada elemento pertenece a (est definido en) slo un paquete
25
26
Prctica 1
Paquetes en UML
Una clase de un paquete puede aparecer en otro paquete por la importacin a travs de una relacin de dependencia entre paquetes Todas las clases no son necesariamente visibles desde el exterior del paquete, es decir, un paquete encapsula a la vez que agrupa
Paquetes en UML
El operador :: permite designar una clase definida en un contexto distinto del actual Por ejemplo, la expresin Ventas::Producto designa la clase Producto definida en el paquete Ventas
27
28
Ejemplos
Verificar Situacin Vendedor
Preparar Catlogo
Secretaria
Tipos de Venta
29
30
Ejemplos
En el paquete tipos de venta:
Ejemplos
Venta Normal
tarjeta caducada
<<extend>> <<extends>>
Venta en Rebajas Cliente Vendedor
Venta en Oferta
31
32
Prctica 2
Ejemplos
Diagramas de Secuencia
: Socio : Encargado Coger libro : Libro : Ficha socio : Ficha libro : Prstamo
<<include>> <<uses>>
Solicitar prstamo Verificar situacin socio Situacin socio ok
Cliente
Validar operacin
Verificar situacin libro
<<uses>> <<include>>
Autorizar prstamo
33
34
Prctica 3
Diagramas de Colaboracin
1: Coger libro : Libro
: Socio
6: Situacin libro ok
Un diagrama de clases presenta las clases y objetos del sistema con sus relaciones estructurales y de herencia La definicin de clase u objeto incluye definiciones para atributos y operaciones El trabajo realizado en los D. de Casos de Uso, D. de Secuencia y D. de Colaboracin aporta informacin para establecer las clases, objetos, atributos y operaciones
35 36
Ejemplos (Asociacin)
Alumno DNI : char[10] nmero_exp : int nombre : char[50] alta() poner_nota(asignatura : char *, ao : int, nota : float) matricular(cursos : asignatura, ao : int) listar_expediente()
Departamento
dirige 0..1
director 1
Profesor
37
38
Ejemplos (Generalizacin)
Empleado
{disjunta, completa}
+superior 0..1
Directivo
Administrativo
Obrero
39
40
Prcticas 4 -8
Ejemplos
Motor 1..4 Piloto 1..2 Vendedor de billetes 1
Diagramas de Estados
alta baja
1 Avin 1 *
* Vuelo * 1 *
* Reserva
Socio Biblioteca Nmero : int Nombre : char[50] Nmero prstamos : int = 0 Alta() Baja() Prestar(CdigoLibro : int, Fecha : date) Devolver(CdigoLibro : int, Fecha : date)
prestar
devolver[ nmero_prstamos = 1 ]
{ disjunta, completa }
{ disjunta, completa }
devolver[ nmero_prstamos > 1 ]
Avin de carga
Avin de pasajeros
41
42
Prctica 9
Diagramas de Actividad
Poner caf en filtro Buscar Bebida [no hay caf] [no zumo] [hay zumo] [hay caf Aadir agua al depsito Coger taza Coger zumo
Encender mquina ^cafetera.On Caf en preparacin indicador de fin Servir caf Beber
43
Prctica 10
Diagramas Componentes
Control y Anlisis Interfaz de Terminal Comment Comment
Diagramas de Distribucin
Servidor Central Acceso a BD Comment Control y Anlisis Comment
Rutinas de Coneccion
Terminal de Consulta
Acceso a BD Comment
Punto de Venta Rutinas de Coneccion Comment Gestin de Cuentas Interfaz de Terminal
Rutinas de Coneccion
45
46
Resumen
Captura de Requisitos Anlisis y Diseo
Diagramas de Estados Diagramas de Secuencia Diagramas de Casos de Uso Diagramas de Colaboracin Diagramas de Actividad Diagramas De Clases Diagramas de Componentes Diagramas de Actividad Diagramas de Distribucin
Implementacin
"You can model 80 percent of most problems by using about 20 percent of the UML."-- Grady Booch
47
48
Mejora captura y validacin de requisitos Acerca el espacio del problema y el espacio de la solucin
Facilita la transicin entre distintas fases Favorece el desarrollo iterativo del sistema Disipa la barrera entre el qu y el cmo
49
50
Problemas en OO
...Los conceptos bsicos de la OO se conocen desde hace dos dcadas, pero su aceptacin todava no est tan extendida como los beneficios que esta tecnologa puede sugerir ...La mayora de los usuarios de la OO no utilizan los conceptos de la OO de forma purista, como inicialmente se pretenda. Esta prctica ha sido promovida por muchas herramientas y lenguajes que intentan utilizar los conceptos en diversos grados
--Wolfgang Strigel
51
Problemas en OO
Un objeto contiene datos y operaciones que operan sobre los datos, pero ... Podemos distinguir dos tipos de objetos degenerados:
Un objeto sin datos (que sera lo mismo que una biblioteca de funciones) Un objeto sin operaciones, con slo operaciones del tipo crear, recuperar, actualizar y borrar (que se correspondera con las estructuras de datos tradicionales)
Un sistema construido con objetos degenerados no es un sistema verdaderamente orientado a objetos Las aplicaciones de gestin estn constituidas mayoritariamente por objetos degenerados
52
Diseo DEs
Modelo Relacional
Implementacin
Entornos de Programacin Visual
DFDs E-R
Diagramas de Casos de Uso Diagramas de Actividad Diagramas de Secuencia Diagramas de Colaboracin Bosquejos de Interfaces
Modelo Relacional !!
Enfoque OO
53
54
Objetos
Objeto = unidad atmica que integra estado y comportamiento La encapsulacin en un objeto permite una alta cohesin y un bajo acoplamiento Un objeto puede caracterizar una entidad fsica (coche) o concepto (ecuacin matemtica)
Objetos
El Modelado de Objetos permite representar el ciclo de vida de los objetos a travs de sus interacciones En UML, un objeto se representa por un rectngulo con un nombre subrayado
Un Objeto Otro Objeto ms Otro Objeto
55 56
Objetos
Ejemplo de varios objetos relacionados:
Dos clientes del banco
Objetos
Cuenta corriente Libreta de ahorro a plazo Libreta de ahorro
Felipe
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 ...
57 58
Juan
Cuenta corriente
Identidad
Oid (Object Identifier) Cada objeto posee un oid. El oid establece la identidad del objeto y tiene las siguientes caractersticas:
Constituye un identificador nico y global para cada objeto dentro del sistema Es determinado en el momento de la creacin del objeto Es independiente de la localizacin fsica del objeto, es decir, provee completa independencia de localizacin
Identidad
Es independiente de las propiedades del objeto, lo cual implica independencia de valor y de estructura No cambia durante toda la vida del objeto. Adems, un oid no se reutiliza aunque el objeto deje de existir No se tiene ningn control sobre los oids y su manipulacin resulta transparente
Sin embargo, es preciso contar con algn medio para hacer referencia a un objeto utilizando referencias del dominio (valores de atributos)
59 60
10
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 estmulo externo representado como mensaje enviado desde otro objeto
61
Comportamiento
Ejemplo de interaccin:
Otro objeto
Un mensaje Operacion 2
Un objeto
Operacion 1
62
Comportamiento
Los mensajes navegan por los enlaces, a priori en ambas direcciones Estado y comportamiento estn relacionados Ejemplo: no es posible aterrizar un avin si no est volando. Est volando como consecuencia de haber despegado del suelo
Persistencia
La persistencia de los objetos designa la capacidad de un objeto trascender en el espacio/tiempo Un objeto persistente conserva su estado en un sistema de almacenamiento permanente (usualmente memoria secundaria) Podremos despus reconstruirlo , es decir, cogerlo de memoria secundaria para utilizarlo en la ejecucin (materializacin del objeto) Los lenguajes OO no proponen soporte adecuado para la persistencia, pues sta debera ser transparente, un objeto existe desde su creacin hasta que se destruya
64
63
Comunicacin
Un sistema informtico puede verse como un conjunto de objetos autnomos y concurrentes que trabajan de manera coordinada en la consecucin de un fin especfico El comportamiento global se basa pues en la comunicacin entre los objetos que la componen
Comunicacin
Categoras de objetos:
Activos - Pasivos Cliente Servidores, Agentes
Objeto Activo: posee un hilo de ejecucin (thread) propio y puede iniciar una actividad Objeto Pasivo: no puede iniciar una actividad pero puede enviar estmulos una vez que se le solicita un servicio Cliente es el objeto que solicita un servicio. Servidor es el objeto que provee el servicio solicitado
65 66
11
Comunicacin
Los agentes renen las caractersticas de clientes y servidores Son la base del mecanismo de delegacin Introducen indireccin: un cliente puede comunicarse con un servidor que no conoce directamente
Comunicacin
Ejemplo en el que un agente hace de aislante:
Enrutamiento dinmico
Un agente
Sevidor 1
Servidor 2 Un cliente
Aislante
67 68
El Concepto de Mensaje
La unidad de comunicacin entre objetos se llama mensaje El mensaje es el soporte de una comunicacin que vincula dinmicamente los objetos que fueron separados previamente en el proceso de descomposicin Adquiere toda su fuerza cuando se asocia al polimorfismo y al enlace dinmico
69
El Concepto de Mensaje
Objeto 1 : Mensaje A Objeto 2
: Mensaje C Objeto 3
: Mensaje E Objeto 4
: Mensaje D
70
Mensaje y Estmulo
Un estmulo causar la invocacin de una operacin, la creacin o destruccin de un objeto o la aparicin de una seal Un mensaje es la especificacin de un estmulo Tipos de flujo de control:
Llamada a procedimiento o flujo de control anidado Flujo de control plano Retorno de una llamada a procedimiento Otras variaciones
Esperado ( balking) Cronometrado ( time-out)
71 72
Captura de Requisitos
12
Casos de Uso
Los Casos de Uso (Ivar Jacobson) describen bajo la forma de acciones y reacciones el comportamiento de un sistema desde el p.d.v. del usuario Permiten definir los lmites del sistema y las relaciones entre el sistema y el entorno Los Casos de Uso son descripciones de la funcionalidad del sistema independientes de la implementacin Comparacin con respecto a los Diagramas de Flujo de Datos del Enfoque Estructurado
Casos de Uso
Los Casos de Uso cubren la carencia existente en mtodos previos (OMT, Booch) en cuanto a la determinacin de requisitos Los Casos de Uso particionan el conjunto de necesidades atendiendo a la categora de usuarios que participan en el mismo Estn basado en el lenguaje natural, es decir, es accesible por los usuarios
73
74
Casos de Uso
Ejemplo:
Sistema
Casos de Uso
Actores:
Principales: personas que usan el sistema Secundarios: personas que mantienen o administran el sistema Material externo: dispositivos materiales imprescindibles que forman parte del mbito de la aplicacin y deben ser utilizados Otros sistemas: sistemas con los que el sistema interacta
Caso de uso X
Actor A Actor B
La misma persona fsica puede interpretar varios papeles como actores distintos El nombre del actor describe el papel desempeado
76
Caso de uso Y
75
Casos de Uso
Los Casos de Uso se determinan observando y precisando, actor por actor, las secuencias de interaccin, los escenarios, desde el punto de vista del usuario Un escenario es una instancia de un caso de uso Los casos de uso intervienen durante todo el ciclo de vida. El proceso de desarrollo estar dirigido por los casos de uso
77
78
13
En UML 1.3 se estereotipa como <<include>> lo que antes llevaba el estereotipo <<uses>>
79
80
Transferencia Giro
81
82
14
Postcondicin Excepciones
Rendimiento
< nombre del requisito funcional> <numero de versin y fecha> <autor> <fuente de la versin actual> <nombre del objetivo> El sistema deber comportarse tal como se describe en el siguiente caso de uso { concreto cuando <evento de activacin> , abstracto durante la realizacin de los casos de uso <lista de casos de uso>} <precondicin del caso de uso> Paso Accin 1 {El <actor> , El sistema} <accin realizada por el actor o sistema>, se realiza el caso de uso < caso de uso RF -x > 2 Si <condicin>, {el <actor> , el sistema} <accin realizada por el actor o sistema>>, se realiza el caso de uso < caso de uso RF-x> 3 4 5 6 n <postcondicin del caso de uso> Paso Accin 1 Si <condicin de excepcin>,{el <actor> , el sistema} }<accin realizada por el actor o sistema>>, se realiza el caso de uso < caso de uso RF -x>, a continuacin este caso de uso {continu a, aborta} 2 3 Paso Cota de tiempo 1 n segundos 2 n segundos <n de veces> veces / <unidad de tiempo> {sin importancia, importante, vital} {puede esperar, hay presin, inmediatamente} <comentarios adicionales>
85
86
Prctica 11
La especificacin de cada caso de uso y los correspondientes D. de Interaccin establecen el vnculo con el modelo conceptual En mtodos OO que carecen de una tcnica de captura de requisitos se comienza inmediatamente con la construccin del modelo conceptual
Modelado de Interacciones
87
88
Interaccin
Los objetos interactan para realizar colectivamente los servicios ofrecidos por las aplicaciones. Los diagramas de interaccin muestran cmo se comunican los objetos en una interaccin Existen dos tipos de diagramas de interaccin: los Diagramas de Colaboracin y los Diagramas de Secuencia
89
Diagramas de interaccin
Los Diagramas de Secuencia son ms adecuados estn para observar la perspectiva cronolgica de las interacciones Los Diagramas de Colaboracin ofrecen una mejor visin espacial mostrando los enlaces de comunicacin entre objetos Normalmente el D. de Colaboracin se obtiene a partir del correspondiente D. de Secuencia
90
15
Diagramas de Secuencia
Muestra la secuencia de mensajes entre objetos durante un escenario concreto Cada objeto viene dado por una barra vertical El tiempo transcurre de arriba abajo Cuando existe demora entre el envo y la atencin se puede indicar usando una lnea oblicua
91
Diagramas de Secuencia
Un ejemplo:
A B C
m1
m2 m3
m4 m5
92
Diagramas de Secuencia
Ejemplo
Quien llama Lnea telefnica Llamado descuelga
Diagramas de Secuencia
Un objeto puede enviarse a s mismo un mensaje:
a
tono
marcar
indicacin de llamada
timbre
mensaje reflexivo
descuelga
diga?
93
94
Diagramas de Secuencia
Grficamente tambin se puede indicar cundo el mensaje es para crear el objeto (va dirigido al rectngulo del objeto o etiquetado con new) o para destruirlo (va dirigido a la lnea del objeto pero el final de la flecha es una cruz) Ver UML V1.3 pgina 3-100
Diagramas de Secuencia
Normalmente no es necesario indicar el retorno del control:
a b
95
96
16
Diagrama de Secuencia
En el caso asncrono el retorno, si existe, se debe representar:
a : aa b : aa
Tipos de Control
El Diagrama de Secuencia refleja de manera indirecta las opciones de control Un control centralizado tiene una forma como esta:
97
98
Tipos de control
Un control descentralizado tiene una forma como esta:
Estructuras de control
Podemos representar iteraciones en el envo de mensajes, p.e., mientras se cumpla una condicin:
99
100
Estructuras de control
La iteracin puede expresarse tambin como parte del mensaje:
Estructuras de control
Las bifurcaciones condicionales pueden representarse de esta forma:
*[condicin] Mensaje
101
102
17
Diagramas de Colaboracin
Son tiles en la fase exploratoria para identificar objetos La distribucin de los objetos en el diagrama permite observar adecuadamente la interaccin de un objeto con respecto de los dems La estructura esttica viene dada por los enlaces; la dinmica por el envo de mensajes por los enlaces
Mensajes
Un mensaje desencadena una accin en el objeto destinatario Un mensaje se enva si han sido enviados los mensajes de una lista (sincronizacin):
A
103 104
Mensajes
Un mensaje se enva iterada y secuencialmente a un conjunto de instancias:
Mensajes
Un mensaje se enva iterada y concurrentemente a un conjunto de instancias:
1 *[i:=1..n] : Mensaje B A A
1 *| | [i:=1..n] : Mensaje B
105
106
Mensajes
Un mensaje se enva de manera condicionada:
Mensajes
Un mensaje que devuelve un resultado:
[x>y] 1: Mensaje
1: distancia:= mover(x,y) B B A
107
108
18
Prctica 12
Mensajes
Los argumentos de un mensaje pueden ser valores obtenidos como consecuencia de las llamadas anteriores Los argumentos pueden ser tambin expresiones de navegacin construidas a partir del objeto cliente Los argumentos pueden omitirse en el diagrama
109 110
Modelado Conceptual
Clases
Modelado Conceptual:
Organizacin del conocimiento del dominio del problema en un conjunto de abstracciones ordenadas de forma que se obtiene un conocimiento ms profundo del problema
Clases
El mundo real puede ser visto desde abstracciones diferentes (subjetividad) Mecanismos de abstraccin:
111
Clases
La clase define el mbito de definicin de un conjunto de objetos Cada objeto pertenece a una clase Los objetos se crean por instanciacin de las clases
113
114
19
Clases: Encapsulacin
La encapsulacin presenta dos ventajas bsicas: 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 deberan ser manipulables directamente por el resto de objetos
115
116
Clases: Encapsulacin
Los niveles de encapsulacin estn heredados de los niveles de C++:
(-) Privado : es el ms fuerte. Esta parte es totalmente invisible (excepto para clases friends en terminologa C++) (#) Los atributos/operaciones protegidos estn visibles para las clases friends y para las clases derivadas de la original (+) Los atributos/operaciones pblic os son visibles a otras clases ( cuando se trata de atributos se est transgrediendo el principio de encapsulacin)
Clases: Encapsulacin
Ejemplo:
Reglas de visibilidad + Atributo pblico : int # Atributo protegido : int - Atributo privado : int + "Operacin pblica" # "Operacin protegida" - "Operacin privada"
117 118
Asociacin
La asociacin expresa una conexin bidireccional entre objetos Una asociacin es una abstraccin de la relacin existente en los enlaces entre los objetos
Univ. de Murcia:Universidad Un enlace Antonio:Estudiante
Estudiante
120
20
Asociacin
Ejemplo:
marido casado -con 0.. 1 0.. 1 mujer Persona jefe nombre 0.. 1 s. s. Administra trabaja-para emplea -a
Asociacin
Especificacin de multiplicidad (mnima...mxima)
1 0..1 M..N * 0..* 1..* Uno y slo uno Cero o uno Desde M hasta N (enteros naturales) Cero o muchos Cero o muchos Uno o muchos (al menos uno)
* Compaa
nombre direccin
empleado
Asociacin Cualificada
Aerolnea nro_billete *
0..1
Agregacin
La agregacin representa una relacin parte_de entre objetos En UML se proporciona una escasa caracterizacin de la agregacin Puede ser caracterizada con precisin determinando las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno de sus objetos componentes
123 124
Viajero
Tablero Ajedrez
fila columna
Cuadro
Agregacin: Caracterizacin
1. Puede el objeto parte comunicarse directamente con objetos externos al objeto agregado?
No => inclusiva Si => no inclusiva
Agregacin: Caracterizacin
4. Puede existir un objeto parte sin ser componente de un objeto
agregado?
Si => flexible No => estricta 5. Cuntos objetos de una clase componente puede tener asociados un objeto agregado? Ms de uno => multivaluada Mximo uno => univaluada 6. Puede el objeto agregado no tener objetos de una clase componente en algn instante? Si => co n nulos permitidos No => con nulos no permitidos
p
125
En UML slo se distingue entre agregacin y composicin (aggregate composition), siendo esta ltima disjunta y estricta.
126
21
Agregacin: Caracterizacin
Las caracterizaciones 1, 3, 4 y 5 estn incluidas en el concepto ms amplio de multiplicidad Objeto Agregado
Multiplicidad Mnima 0 nulos permitidos > 0 nulos no permitidos Multiplicidad Mxima 1 univaluado > 1 multivaluado Multiplicidad Mnima 0 flexible > 0 estricta Multiplicidad Mxima 1 disjunto >1 no disjunto
Ejemplos
coche 1 0..2 +Padre 1 motor +Hijos *
Persona
Objeto Componente
127 128
Ejemplos
Agregacin
Polgono
1 contiene 3.. * {ordenado}
Persona Empresa
*
Cuenta
*
or
1
Asociacin excluyente
Los Diagramas de Clases y los Diagramas de Objetos pertenecen a dos vistas complementarias del modelo Un Diagrama de Clases muestra la abstraccin de una parte del dominio Un Diagrama de Objetos representa una situacin concreta del dominio Cada objeto es instancia de una clase Ciertas clases (clases abstractas o diferidas) no pueden ser instanciadas
130
est-autorizado -en *
Usuario
Estacin
129
Clase de asociacin
Jerarquas de Generalizacin/Especializacin
Permiten gestionar la complejidad mediante un ordenamiento taxonmico Se obtiene usando los mecanismos de abstraccin de Generalizacin y/o Especializacin La Generalizacin consiste en factorizar las propiedades comunes de un conjunto de clases en una clase ms general
131
132
22
vehiculo terrestre
vehiculo areo
camion
133
coche
avion
helicoptero
134
funcionando
estropeado
avion
helicoptero
137
138
23
coche
funcionando
estropeado
C0
C0
C1
141
142
militar avion
143
helicoptero
144
24
145
146
vehiculo terrestre
coche
camion
coche
Harley Davidson
dinmica
funcionando
estropeado
147
148
oruga
crislida
Lepidptero
oruga
crislida
Lepidptero
150
25
Herencia Mltiple
Se presenta cuando una subclase tiene ms de una superclase La herencia mltiple debe manejarse con precaucin. Algunos problemas son el conflicto de nombre y el conflicto de precedencia Se recomienda un uso restringido y disciplinado de la herencia. Java y Ada 95 simplemente no ofrecen herencia mltiple
151
Herencia Mltiple
La multiplicidad de la clasificacin mltiple se puede representar tambin mediante asociaciones:
Realiza > Clase * Tipo
Tipo A
Tipo B
Tipo C
152
Herencia Mltiple
Uso disciplinado de la herencia mltiple
conejo
Delegacin
La herencia no es una necesidad absoluta y siempre puede sustituirse por delegacin Disminuye el acoplamiento: el cliente no conoce directamente al proveedor y el proveedor puede ser modificado sobre la marcha Permite implementar herencia mltiple en lenguajes con herencia simple
153 154
con pelo Herbvoro con plumas omnvoro Animal con escamas carnvoro
Bipedo
Cuadrpedo
Delegacin
Ejemplo: delegacin en lugar de herencia mltiple Animal
Principio de Sustitucin
El Principio de Sustitucin de Liskow (1987) afirma que: Debe ser posible utilizar cualquier objeto instancia de una subclase en el lugar de cualquier objeto instancia de su superclase sin que la semntica del programa escrito en los trminos de la superclase se vea afectado.
Carnvoro
155 156
x Locomocin
x Alimento
Bpedo
Cuadrpedo
Herbvoro
26
Principio de Sustitucin
Dado que los programadores pueden introducir cdigo en las subclases redefiniendo las operaciones, es posible introducir involuntariamente incoherencias que violen el principio de sustitucin El polimorfismo que veremos a continuacin no debera implementarse sin este principio
Polimorfismo
El trmino polimorfismo se refiere a que una caracterstica de una clase puede tomar varias formas El polimorfismo representa en nuestro caso la posibilidad de desencadenar operaciones distintas en respuesta a un mismo mensaje Cada subclase hereda las operaciones pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones
157 158
Polimorfismo
Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta
Zoo 1 * Animal
Polimorfismo
Zoo 1 * Animal Dormir() { }
?
dormir
Len Oso Tigre
?
Len Oso Tigre
Dormir() { sobre el vientre }
159
Dormir() { en un rbol }
160
Polimorfismo
La bsqueda automtica del cdigo que en cada momento se va a ejecutar es fruto del enlace dinmico El cumplimiento del Principio de Sustitucin permite obtener un comportamiento y diseo coherente
Comentarios
Los Diagramas de Clases v/s los modelos de datos (Diagramas Entidad -Relacin)
161
162
27
163
164
Diagramas de Estados
Cada objeto est en un estado en cierto instante El estado est caracterizado parcialmente por los valores de los atributos del objeto
Diagramas de Estados
Los D. de Estados son autmatas jerrquicos que permiten expresar concurrencia, sincronizacin y jerarquas de objetos Los Diagramas de Estados son grafos dirigidos
Los D. De Estados de UML son deterministas Los estados inicial y final estn diferenciados del resto La transicin entre estados es instantnea y se debe a la ocurrencia de un evento
El estado en el que se encuentra un objeto determina su comportamiento Cada objeto sigue el comportamiento descrito en el D. de Estados asociado a su clase
Los D. De Estados y escenarios son complementarios
165
166
Diagramas de Estados
Ejemplo de un Diagrama de Estados para la clase persona:
contratar en el paro perder empleo jubilarse jubilarse en activo
Diagramas de Estados
La comunicacin bidireccional puede representarse mediante comunicacin asncrona. Por ejemplo en un Diagrama de Colaboracin:
1: una pregunta un objeto 2: la respuesta otro objeto
jubilado
167
168
28
Diagramas de Estados
Si la comunicacin es sncrona el cliente debe esperar la respuesta. Con lo cual en el cliente tendramos:
a
Diagramas de Estados
Las guardas permiten condicionar la transicin:
a Evento[ condicin ] b
espera respuesta
169
170
Acciones
Podemos especificar la ejecucin de una accin como consecuencia de la transicin:
Acciones
Podemos especificar el envo de un evento a otro objeto como consecuencia de la transicin:
a
b
b
172
Acciones
Se puede especificar el hacer una accin como consecuencia de entrar, salir o estar en un estado:
estado A entry: accin por entrar exit: accin por salir do: accin mientras en estado
.. Acciones
Se puede especificar el hacer una accin cuando ocurre en dicho estado un evento que no conlleva salir del estado:
estado A on evento_activador( arg1 )[ condicin ]: accin por evento
173
174
29
Actividades
Las actividades son similares a las acciones pero tienen duracin y se ejecutan dentro de un estado del objeto Las actividades pueden interrumpirse en todo momento, cuando se desencadena la operacin de salida del estado
Actividades
Cuando una actividad finaliza se produce una transicin automtica de salida del estado
a do: actividad [ not condicin ] b
[ condicin ]
175
176
Generalizacin de Estados
Podemos reducir la complejidad de estos diagramas usando la generalizacin de estados Distinguimos as entre superestado y subestados Un estado puede contener varios subestados disjuntos Los subestados heredan las variables de estado y las transiciones externas
Generalizacin de Estados
Ejemplo:
a e2 e2 c e1 b
177
178
Generalizacin de Estados
Quedara como:
e1
Generalizacin de Estados
Las transiciones de entrada deben ir hacia subestados especficos:
e1 a e2 e0 b
e2
c
c
179 180
30
Generalizacin de Estados
Es preferible tener estados iniciales de entrada a un nivel de manera que desde los niveles superiores no se sepa a qu subestado se entra:
e1 a e2 e0 b c
Generalizacin de Estados
Es posible ocultar los detalles de los subestados:
c e0
181
182
Generalizacin de Estados
La agregacin de estados es la composicin de un estado a partir de varios estados independientes La composicin es concurrente por lo que el objeto estar en alguno de los estados de cada uno de los subestados concurrentes
Generalizacin de Estados
Ejemplo:
e1 e1
183
184
Historial
Por defecto, los autmatas no tienen memoria Es posible memorizar el ltimo subestado visitado para recuperarlo en una transicin entrante en el superestado que lo engloba
Historial
Ejemplo:
a
d2 in h out d1 x y
H
185 186
31
Historial
Tambin es posible la memorizacin para cualquiera de los subestados anidados (aparece un * junto a la H)
a d2 in h out d1
H*
Historial
Ejemplo:
Enjuague Lavado Secado
Espera
187 188
Destruccin de Objeto
Ejemplo:
En vuelo crash
aterrizar
189
190
Transiciones temporizadas
Las esperas son actividades que tienen asociada cierta duracin La actividad de espera se interrumpe cuando el evento esperado tiene lugar Este evento desencadena una transicin que permite salir del estado que alberga la actividad de espera. El flujo de control se transmite entonces a otro estado
191
Transiciones temporizadas
Ejemplo:
Si en 30 segundos no se introduce el dinero se termina la actividad pasando a anular la transaccin. En cualquier caso se cierra la ranura.
/ Abrir ranura esperar dinero entry: Mostrar mensaje do: Esperar 30 segundos exit: cerrar ranura anular transaccin a
Depsito efectuado
b
192
32
Transiciones temporizadas
Ejemplo v.2:
a
Diagrama de Actividades
El Diagrama de Actividades es una variante de los Diagramas de Estados, organizado respecto de las acciones y principalmente destinado a representar el comportamiento interno de un mtodo (la realizacin de una operacin), de un caso de uso o de un proceso de negocio (Workflow) Una actividad puede considerarse un estereotipo de estado
193 194
/ Abrir ranura esperar dinero entry: Mostrar mensaje exit: cerrar ranura Temporizador (30 segundos) anular transaccin
Depsito efectuado
...Diagrama de Actividades
Las actividades se enlazan por transiciones automticas Cuando una actividad termina se desencadena el paso a la siguiente actividad Las actividades no poseen transiciones internas ni transiciones desencadenadas por eventos
Ejemplos
Buscar Bebida [no hay caf] [no zumo] [hay zumo] [hay caf Poner caf en filtro Aadir agua al depsito Coger taza Poner filtro en mquina Coger zumo
Encender mquina ^cafetera.On Caf en preparacin indicador de fin Servir caf Beber
196
195
Modelado de Componentes
33
Diagrama de Componentes
Los diagramas de componentes describen los elementos fsicos del sistema y sus relaciones Muestran las opciones de realizacin incluyendo cdigo fuente, binario y ejecutable
...Diagramas de Componentes
Los componentes representan todos los tipos de elementos software que entran en la fabricacin de aplicaciones informticas. Pueden ser simples archivos, paquetes de Ada, bibliotecas cargadas dinmicamente, etc. Cada clase del modelo lgico se realiza en dos componentes: la especificacin y el cuerpo
199 200
Diagramas de Componentes
La representacin grfica es la siguiente:
Especificacin Cuerpo Genrico
Diagramas de Componentes
En C++ una especificacin corresponde a un archivo con un sufijo .h y un cuerpo a un archivo con un sufijo .cpp En Ada la nocin de mdulo existe directamente en el lenguaje con el nombre del paquete
Package specification
Package body
Generic package
201 202
Subsistemas
Los distintos componentes pueden agruparse en paquetes segn un criterio lgico y con vistas a simplificar la implementacin Son paquetes estereotipados en <<subsistemas>>
<<subsistema>> NewPackage4
203
204
34
Subsistemas
Los subsistemas organizan la vista de realizacin de un sistema Cada subsistema puede contener componentes y otros subsistemas La descomposicin en subsistemas no es necesariamente una descomposicin funcional Paquetes (Categorias) y clases en el nivel lgico. Paquetes (Subsistemas) y componentes en el nivel fsico
Modelado de Distribucin
205
206
Diagramas de Distribucin
Los Diagramas de Distribucin muestran la disposicin fsica de los distintos nodos que componen un sistema y el reparto de los componentes sobre dichos nodos
Diagramas de Distribucin
Los estereotipos permiten precisar la naturaleza del equipo:
Dispositivos Procesadores Memoria
Nodo
Los nodos se interconectan mediante soportes bidireccionales (en principio) que pueden a su vez estereotiparse
207 208
Diagramas de Distribucin
Ejemplo de conexin entre nodos:
<<Procesador> Nodo <<dispositivo>> nodo2
<<<<TCP/IP>>>> conexin1
conexin7 <<RDSI>>
En Rational Rose podemos distinguir entre el dispositivo por estereotipado y el dispositivo con su propio smbolo
dispositiv o
209
210
35
Hacia un Mtodo OO
Un proceso de desarrrollo de programas tiene como objetivo la formalizacin de las actividades relacionadas con la elaboracin de sistemas informticos Debe ser:
Reproducible Definido Medible en cuanto a rendimiento Optimizable ...
Hacia un Mtodo OO
UML no incorpora por s mismo el modelo de proceso Los autores destacan las siguientes caractersticas de UML como esenciales para determinar el proceso de desarrollo:
Est dirigido por los casos de uso: desde la especificacin hasta el mantenimiento Se centra en la arquitectura: reutilizable y como gua hasta la solucin Iterativo e incremental: el trabajo se divide en iteraciones pequeas en funcin de la importancia de los casos de uso y el estudio de riesgos
211
212
Hacia un Mtodo OO
Requisitos Anlisis Diseo Implement. Pruebas
Hacia un Mtodo OO
Las 4+1 vistas de Kruchten (1995):
Vista de Realizacin Vista de los Casos de Uso Vista de Procesos Vista de Distribucin
Vista Lgica
36
Reparto de Actividades
Actividades
Ince ption Requisitos Una iteracin en la fase de elaboracin Anlisis Elabora tion
Fases
Construc tion Tr ansition
Diseo
Implementacin
Pruebas
P r eli m in ary I te ratio n (s) iter. #1 iter. #2 iter. #n iter. #n +1 ite r. #n + 2 i te r. #m iter. #m + 1
220
Elaboracin
222
37
224
Diseo
Diseo
Implementacin
Implementacin
Pruebas
Pruebas
P re lim i na ry Iter atio n(s) i ter. #1 i te r. #2 i te r. #n i te r. # n+ 1 iter. #n +2 iter. #m ite r. # m +1
Esfuerzo: Duracin:
5% 10%
20% 30%
65% 50%
10% 10%
226
Claves en el Desarrollo de SI
Notacin UML
Conclusiones
38
Modelar para la concebir el sistema y/o para la documentarlo Pragmatismo, los modelos deben ser tiles Sencillez y Elegancia Distintos nivel de abstraccin, diferentes modelos Seguimiento de transformaciones durante el proceso (Traceability ) Sincronizacin de modelos Dificultades para la introduccin de tcnicas y herramientas de modelado
230
229
... Finalmente
Apostar por enfoque Orientado a Objetos usando notacin UML Problemas actuales en implementacin, al usar entornos de programacin visual y/o bases de datos relacionales Posibles mejoras a mediano plazo
Evolucin: Uso de BDOO y/o mejoras en los LPOO Revolucin: Generacin Automtica de Cdigo a partir de Modelos OO (Compilacin de Modelos)
231
Bibliografa Recomendada
UML
www.omg.org / uml/ Martin Fowler , UML Destilled (UML Gota a Gota) Terry Quatrani , Visual Modeling ..., un caso de estudio
Herramientas CASE
International Council in SE (INCOSE) Tools Database Working Group . www.incose.org/tools/
Otras
Desmond DSouza, componentes www.enteract.com / bradapp/docs/patterns -intro.html, patrones Revista IEEE Software, Conferencias: OOPSLA, ECOOP
232
39