Desarrollo de Software OO usando UML

Download Report

Transcript Desarrollo de Software OO usando UML

Modelado de Software
Orientado a Objetos usando UML
Dr. Pedro Mejia Alvarez
Departamento de Computacion
CINVESTAV-IPN
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
1
Contenido
I.
Introducción
– Modelado de Software
– UML
II. Breve Tour por UML
III. El Paradigma Orientado a Objeto usando UML
– Fundamentos del Modelado OO
– Requisitos del software
– Interacción entre objetos
– Clases y relaciones entre clases
– Comportamiento de objetos
– Componentes
– Distribución y despliegue de componentes
– Object Constraint Language (OCL)
IV. Proceso de Desarrollo de SW basado en UML
V. Conclusiones
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
2
I
Introducción
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
3
Introducción: Modelado de SW
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
4
Construcción de Algoritmo de Fibonacci
int fib(int val){
if ((val==1)||(val==2)) return 1;
else
return (fib(val-1)+fib(val-2));
}
Puede hacerlo una sola persona
Requiere:
Modelado mínimo
Proceso simple
Herramientas simples
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
5
I. Introducción: Modelado de SW
Construcción del software para un cajero
automatico
Secu rity
sy stem
Bran ch
acco un tin g
sy stem
Acco u nt
d atab ase
Au to-teller
sy stem
Bran ch
co un ter
sy stem
Usag e
d atabase
Main tenance
sy stem
Pedro Mejia
Construida eficientemente y en un tiempo
razonable por un equipo
Requiere:
Modelado
Proceso bien definido
Herramientas más sofisticadas
Curso de Ingeniería de Software, CINVESTAV-IPN
6
Sistema de Radar de Aeropuerto
Notación
Herramientas
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
Proceso
7
Pero, como se modela un sistema con
esta complejidad ?
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
8
Beneficios del Modelado
Manejar la complejidad
Interface de Usuario
(Visual Basic,
Java, ..)
Lógica del Negocio
(C++, Java, ..)
Múltiples Sistemas
Servidor de BDs
(C++ & SQL, ..)
“Modelar el sistema
independientemente
del lenguaje de
implementación”
Pedro Mejia
Componentes
Reutilizados
Promover la Reutilización
Curso de Ingeniería de Software, CINVESTAV-IPN
9
Introducción: UML
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
10
¿Qué es UML?
 UML = Unified Modeling Language
 Un lenguaje de propósito general para el
modelado orientado a objetos. Impulsado por el
Object Management Group (OMG, www.omg.org)
 Documento “OMG Unified Modeling Language
Specification”
 UML combina notaciones provenientes desde:
•
•
•
•
Pedro Mejia
Modelado
Modelado
Modelado
Modelado
Orientado a Objetos
de Datos
de Componentes
de Flujos de Trabajo (Workflows)
Curso de Ingeniería de Software, CINVESTAV-IPN
11
Antes de UML


Diversos métodos y técnicas OO, con muchos aspectos
en común pero utilizando distintas notaciones.
Modelos de Constantine, Jackson, Gane Sarson, ShlaerMellor, etc.

Inconvenientes para el aprendizaje, aplicación,
construcción y uso de herramientas CASE, etc.

Pugna entre distintos enfoques
Objetivo: Establecer una notación estándar
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
12
Antes de UML




Modelos de descripción de procesos: Diagramas de
flujo de datos.
Modelos de descripción de datos: Diagramas de
entidad-relación, diccionario de datos.
Modelos de descripción arquitectural: Diagramas de
Estructura.
Modelos de descripción de comportamiento: StateCharts.
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
13
Historia de UML
 Comenzó como el “Método Unificado”, con la
participación de Grady Booch y Jim Rumbaugh.
Se presentó en el OOPSLA’95
 El mismo año se unió Ivar Jacobson. Los “Tres
Amigos” son socios en la compañía Rational
Software. Herramienta CASE Rational Rose
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
14
Historia de UML
UML 2.0
2005?
2003
2000
1999
1998
Nov ‘97
Pedro Mejia
UML 1.5
UML 1.4
UML 1.3
Revisiones menores
UML 1.2
UML aprobado
por el OMG
Curso de Ingeniería de Software, CINVESTAV-IPN
15
Participantes en UML 1.0

Rational Software
(Grady Booch, Jim Rumbaugh y
Ivar Jacobson)





Digital Equipment
Hewlett-Packard
i-Logix (David Harel)
IBM
ICON Computing
(Desmond D’Souza)

Intellicorp and James
Martin & co. (James Odell)
Pedro Mejia









MCI Systemhouse
Microsoft
ObjecTime
Oracle Corp.
Platinium Technology
Sterling Software
Taskon
Texas Instruments
Unisys
Curso de Ingeniería de Software, CINVESTAV-IPN
16
UML reune a enfoques OO
Rumbaugh
Booch
Jacobson
Odell
Meyer
Pre- and Post-conditions
Shlaer-Mellor
UML
Object life cycles
Harel
State Charts
Gamma et. al.
Frameworks, patterns,
notes
Embly
Singleton classes
Wirfs-Brock
Fusion
Responsabilities
Operation descriptions,
message numbering
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
17
Factores importantes en UML

Definición del proceso de desarrollo usando UML. UML
no es una metodología o proceso.

No cubre todas las necesidades de especificación de un
proyecto software.

Util en la definición de requerimientos, pero tambien en
el diseño (y en las pruebas…).

Notacion estándar y soportada por herramientas CASE

Estándar del OMG

Gran cantidad de Libros y cursos.
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
18
II
Introducion a UML
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
19
Modelos y Diagramas
 Un modelo captura una vista de un sistema del mundo
real. Es una abstracción de dicho sistema, considerando
un cierto propósito. Así, el modelo describe completamente aquellos aspectos del sistema que son relevantes
al propósito del modelo, y a un apropiado nivel de detalle.
 Diagrama: una representación gráfica de una colección
de elementos de modelado, a menudo dibujada como un
grafo con vértices conectados por arcos
OMG UML 1.4 Specification
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
20
... Modelos y Diagramas

Un proceso de desarrollo de software debe ofrecer un conjunto
de modelos que permitan expresar el producto desde cada una
de las perspectivas de interés

El código fuente del sistema es el modelo más detallado del
sistema (y además es ejecutable). Sin embargo, se requieren
otros modelos ...

Cada modelo es completo desde su punto de vista del sistema,
sin embargo, existen relaciones de trazabilidad entre los
diferentes modelos
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
21
Diagramas de UML
Los diagramas expresan gráficamente partes de un modelo
Use Case
Use Case
Diagramas de
Diagrams
Diagrams
Secuencia
Scenario
Scenario
Diagramas de
Diagrams
Diagrams
Colaboración
Scenario
Scenario
Diagramas de
Diagrams
Diagrams
Estados
Pedro Mejia
Use Case
Use Case
Diagramas de
Diagrams
Diagrams
Casos de Uso
State
State
Diagramas de
Diagrams
Diagrams
Clases
State
State
Diagramas de
Diagrams
Diagrams
Componentes
Modelos
Diagramas de
Actividad
State
State
Diagramas de
Diagrams
Diagrams
Objetos
Component
Component
Diagrams
Diagramas
Diagrams de
Distribución
Curso de Ingeniería de Software, CINVESTAV-IPN
22
Diagrama de Casos de Uso
Retirar dinero
Consultar Extracto
Cliente
Es una técnica para capturar
información sobre los servicios que
un sistema proporciona a su
entorno, desde el punto de vista del
usuario. Es una técnica para captura
y especificación de requisitos
Pedro Mejia
Realizar transferencia
Curso de Ingeniería de Software, CINVESTAV-IPN
23
Diagrama de Clases
 El Diagrama de Clases es el diagrama principal para el
análisis y diseño del sistema
 Un diagrama de clases presenta las clases del sistema
con sus relaciones estructurales y de herencia
 La definición de clase incluye definiciones para
atributos y operaciones
 El modelo de casos de uso debería aportar
información para establecer las clases, objetos,
atributos y operaciones
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
24
Clases y Objetos
En UML, para distinguir una
clase y una instancia de la
clase (un objeto) se
representa por un rectángulo
con un nombre subrayado
Objeto = Identidad + Estado
+ Comportamiento
El estado está representado
por los valores de los
atributos los cuales tienen una
visibilidad.
Un atributo toma un valor en
un dominio concreto.
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
25
Diagramas de Clases
Un diagrama de clases describe los tipos de objetos
en el sistema y los distintos tipos de relaciones
estáticas que existen entre ellos. Existen cuatro
relaciones:
• Asociación
• Generalización/especialización
• Agregación/composición
• Dependencia
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
26
Asociación
Departamento
dirige
director
0..1
Profesor
1
empleador
trabajadores
Empresa
Empleado
1..*
*
Cargo
nombre
sueldo
subordinado
superior
0..1
1..*
•Permite asociar objetos.
•La asociacion se representa mediante una línea
que une las cajas de los dos objetos.
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
27
Generalización
Library item
Catalo g ue n u mb er
Acq uis ition date
Cos t
Ty pe
Statu s
Number o f cop ies
Esta es una relación de
tipo: es-un.
Una generalización se
representa como una flecha
que une a las subclases
(hijos) a la superclase
(padre), con la flecha
tocando la caja de la
superclase.
Acq uire ()
Catalo g ue ()
Disp os e ()
Is su e ()
Return ()
Pub lished item
Title
Med iu m
Title
Pub lisher
Boo k
Au tho r
Edition
Pub lication da te
ISBN
Pedro Mejia
Recor d ed item
Mag azine
Year
Is su e
Curso de Ingeniería de Software, CINVESTAV-IPN
Film
Directo r
Date of releas e
Distrib u tor
Compu ter
p ro gram
Versio n
Platfo rm
28
Relacion de Dependencia entre Clases
Se usa para mostrar
relaciones entre paquetes
(grupos de clases)
Proveedor
Cliente
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
29
Agregacion de Objetos
•En este modelo se muestra como
las clases pueden estar compuestas
por otras clases.
•Existe la relacion de agregacion y
la de composicion.
•Son similares a los modelos de
entidad-relacion.
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
30
Diagrama de Secuencia
: Encargado
:WInPréstamos
:Socio
:Video
:Préstamo
prestar(video, socio)
verificar situación socio
verificar situación video
registrar préstamo
entregar recibo
Describe el
comportamiento
dinamico del los
objetos en el
sistema
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
31
Diagrama de Colaboración
:Socio
 Modela la interacción entre
los objetos de un Caso de
Uso
:Video
 Los objetos están
conectados por enlaces
(links) en los cuales se
representan los mensajes
enviados acompañados de
una flecha que indica su
dirección
2: verificar situación socio
1: prestar(video, socio)
3: verificar situación video
:WInPréstamos
5: entregar recibo
: Encargado
 Ofrece una mejor visión del
escenario cuando el analista
está intentando comprender
la participación de un objeto
en el sistema
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
4: registrar préstamo
:Préstamo
32
Diagrama de Estados
alta
baja
número_préstamos = 0
sin préstamos
Socio
número : int
nombre : char[50]
número_prestamos : int = 0
prestar
devolver[ número_préstamos = 1 ]
alta()
baja()
prestar(código_libro : int, fecha : date)
devolver(código_libro : int, fecha : date)
número_préstamos > 0
con préstamos
prestar
Modela el
comportamiento de una
parte del sistema
Pedro Mejia
devolver[ número_préstamos > 1 ]
Curso de Ingeniería de Software, CINVESTAV-IPN
33
Diagrama de Actividad
Es un caso especial de un diagrama
de state-chart en donde los estados
son actividades (“funciones”).
Es util para dibujar los flujos de
trabajo (workflows) en un sistema
Buscar Bebida
[ no hay café ]
[ hay café ]
[ hay zumo ]
Poner café
en filtro
Añadir agua
al depósito
Coger taza
Coger
zumo
Puede especificar:
(1)El comportamiento de los objetos
de una clase
/ cafetera.On
(3) Parte o toda la descripción de un
Caso de uso
Pedro Mejia
Poner filtro
en máquina
Encender
máquina
(2) La lógica de una operación
(método)
(4) La descripción de un Flujo de
Trabajo
[ no zumo ]
Café en
preparación
indicador de fin
Servir café
Curso de Ingeniería de Software, CINVESTAV-IPN
Beber
34
Diagrama Componentes
Interfaz de Terminal
Gestión de Cuentas
Rutinas de conexión
Control y Análisis
Acceso a BD
 Permite modelar la estructura del software y la dependencia entre
componentes, en donde un componente es un grupo de clases que
trabajan estrechamente. Los componentes pueden corresponder
código fuente, binario o ejecutable.
 Una relación de dependencia indica que un componente utiliza
otro, por lo cual depende de él
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
35
Diagrama de Despliegue
Serv idor C entral
C ontrol y Análisis
C omment
Ac ces o a BD
C omment
R utinas de C onec c ion
C omment
Terminal de C ons ulta
R utinas de C onec c ion
C omment
Punto de Venta
R utinas de C onec c ion
C omment
Ges tión de C uentas
Interfaz de Terminal
C omment
C omment
Pedro Mejia
Interfaz de Terminal
C omment
 Modela la distribución en
tiempo de ejecución de los
elementos de procesamiento
y componentes de software,
junto a los procesos y
objetos asociados
 Se modelan los nodos y la
comunicación entre ellos
 Cada nodo puede contiene
instancias de componentes
Curso de Ingeniería de Software, CINVESTAV-IPN
36
Paquetes en UML
 Los paquetes ofrecen un mecanismo general para
la organización de los modelos/subsistemas
agrupando elementos de modelado
 Se representan gráficamente como:
Nombre de
paquete
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
37
… Paquetes en UML
 Cada paquete corresponde a un submodelo
(subsistema) del modelo (sistema)
 Un paquete puede contener otros paquetes, sin
límite de anidamiento pero cada elemento
pertenece a (está definido en) sólo un paquete
 Una clase de un paquete puede aparecer en
otro paquete por la importación a través de una
relación de dependencia entre paquetes
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
38
… Paquetes en UML

Todos los elementos no son
necesariamente visibles desde el
exterior del paquete, es decir,
un paquete encapsula a la vez
que agrupa

El operador “::” permite
designar una clase definida en
un contexto distinto del actual
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
39
...Paquetes en Rational Rose
Customers
Otra Clase
Customers
CheckingAccount
<<access>>
Banking
(f rom Banking)
Banking
CheckingAccount
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
40
Los modelos se usan para describir al
sistema de software


Modelo del sistema: Modelo de objetos +
modelo funcional + modelo dinamico
Modelo de objetos: Cual es la estructura del sistema? Cuales son
los objetos y cual es su relacion?
•

Modelo funcional: Cuales son las funciones del sistema? Como
fluyen los datos en el sistema?
•

Notacion UML: Diagramas de clases
Notacion UML: Diagramas de casos de uso
Modelo dinamico: Como reaccciona el sistema a eventos
externos (e internos) y cual es el flujo de eventos?
•
Pedro Mejia
Notacion UML: Diagramas de secuencia, state charts y de
actividad.
Curso de Ingeniería de Software, CINVESTAV-IPN
41
Modos de utilizacion de UML

Ingenieria hacia adelante(Forward Engineering)
•

Ingenieria en reversa (Reverse Engineering)
•
•

Se crea un modelo a partir de algun codigo
Proyectos de interfaces o re-ingenieria
Ingenieria ciclica (Roundtrip Engineering)
•
•

Se comienza con un modelo antes de producir codigo
Se mueve constantemente entre ingenieria hacia adelante y en
reversa.
Util en proyectos que utilizan el modelo de procesos evolutivo, o
cuando los requerimientos cambian frecuentemente.
Se asume que a partir de UML se puede producir
codigo, pero en donde se ubica UML dentro del
proceso de Diseño ?.
42
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
Proceso de Desarrollo Unificado basado en UML
Propuesta de Rational Unified Process (RUP)









M. de Casos de Uso del Negocio (Business Use-Case Model)
M. de Objetos del Negocio (Business Object Model)
M. de Casos de Uso (Use-Case Model)
M. de Análisis (Analysis Model)
M. de Diseño (Design Model)
M. de Despliegue (Deployment Model)
M. de Datos (Data Model)
M. de Implementación (Implementation Model)
M. de Pruebas (Test Model)
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
43
Claves en el Desarrollo de Software
Notación
UML
Herramientas
p.e. Rational Rose
Poseidon
Pedro Mejia
Proceso
p.e. Rational Unified Process
Métrica 3.0 o XP
Curso de Ingeniería de Software, CINVESTAV-IPN
44
Modelado de Software.

¿Cuál es el propósito de nuestros modelos?







“Documentar”.
Comunicar ideas y estudiar alternativas
Tomar decisiones de análisis/diseño que dirijan la implementación
Generar parcial o totalmente una implementación a partir de los
modelos
Pragmatismo, los modelos deben ser útiles. Principio
básico: “Sencillez y Elegancia”
Gestión de modelos



Distintos nivel de abstracción, expresados en diferentes modelos
Seguimiento de transformaciones durante el proceso (Traceability)
Sincronización de modelos
Dificultades para la introducción de notaciones y
herramientas de modelado. La importancia del Proceso de
Desarrollo
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
45
Resumen
 UML define una notación que se expresa
como diagramas sirven para representar
modelos/subsistemas o partes de ellos
 El modelo de proceso RUP utiliza UML para
el modelado.
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
46
Bibliografía
Partes de este Curso esta basado en el siguiente material:
 Curso de Desarrollo de Software Orientado a Objetos usando UML, del
Prof. Patricio Letelier Torres, del DSIC de la Universidad Politecnica de
Valencia.
 Transparencias del Libro: Object-Oriented Software Engineering: Using
UML, Patterns, and Java, Bernd Bruegge & Allen H. Dutoit (3rd. Edition).
Prentice Hall, 2009.
UML
• www.omg.org/uml/
• Martin Fowler, autor de “UML Destilled” (“UML Gota a Gota”)
http://www.martinfowler.com/
Herramientas CASE
• Rational Rose de IBM
• Herramientas basadas en UML
www.objectsbydesign.com/tools/umltools_byPrice.html
Pedro Mejia
Curso de Ingeniería de Software, CINVESTAV-IPN
47