You are on page 1of 30

Anlisis y Diseo

Orientado a Objetos

1
Ciclo vital del software I

* Ciclo tradicional
Modelo en cascada
Anlisis (qu)

Diseo (cmo)

Codificacin (hacerlo)

Pruebas (funciona?)

Mantenimiento

2
Ciclo vital del software
II

* Ciclo evolutivo
Modelo en espiral
Definicin de un subsistema
(descomposicin funcional)
Construccin de un modelo (qu
clases se requieren)
Anlisis de clase(s)

Ciclo { Diseo de clase(s)

Codificacin de clase(s)

Prueba de clase(s)

* Disea un poco, programa un poco,


prueba un poco...

3
OOD es...

* Modular
* Efectos laterales mnimos
(encapsulamiento)
* Programacin por extensin
* Orientado a datos
* Explota la herencia (jerrquico)
* Reutilizacin de clases
* Fcil de modificar

4
Encapsulamiento I

* Desarrollador
Objetivo: crear clase con interfaz clara
y comprensible
Manera: ocultar detalles de
implementacin
Beneficios: cambio de
estructuras/algoritmos sin afectar
Coste: clases reutilizables ms caras a
corto plazo

5
Encapsulamiento II

* Usuario de las clases


Objetivo: usar la clase con el mnimo
esfuerzo
Manera: usar slo las operaciones
provistas
Beneficios: interfaz comprensible, bajo
coste de programacin
Coste: prdida de eficiencia de
ejecucin (menor si se utiliza un
lenguaje como C++)

6
Descomposicin
funcional

* Mdulos construidos alrededor de


las operaciones
* Datos globales o distribuidos entre
mdulos
* Entrada/Proceso/Salida
* Organigramas de trabajo y flujo de
datos

7
OOD

* Mdulos construidos alrededor de


las clases
* Clases escasamente acopladas, sin
datos globales
* Encapsulamiento y mensajes
* Diagramas jerrquicos de clases

8
Ventajas de OOD

* Mdulos con fuerte cohesin interna y


escaso acoplamiento externo (sin variables
globales, )
* Facilita el funcionamiento en entorno
multiprocesador (objetos distribuidos)
* Correspondencia directa con el mundo real
* Prototipos rpidos
* Herramientas y bibliotecas muy amplias
* Aplicaciones construidas enganchando
objetos
* Mejor comprensin y mantenimiento

9
Inconvenientes de OOD

* Impactos desfavorables sobre


espacio y tiempo de ejecucin
* Forma de pensar diferente: curva de
aprendizaje lenta
* Peligro de atomizacin, con
dificultad de comprensin global
* Herencia y ligadura dinmica
dificulta las pruebas

10
Definicin de una clase

* Identificar y nombrar la clase


* Identificar sus componentes
* Identificar sus atributos
* Identificar los errores
* Identificar las conexiones
funcionales (qu clases sirve/exige)
* Definir conexiones con superclase y
subclases
* Identificar propiedades especiales
(persistencia, concurrencia)
* Probar la clase en un prototipo

11
Identificacin de
atributos

* El conjunto de atributos de una clase


debe ser:
Completo (contienen toda la
informacin pertinente)
General (se aplican a todos los objetos
de la clase)
Diferenciado (cada atributo representa
un aspecto diferente de la clase)

12
Definicin de atributos

* Tipos de atributos
Atmicos predefinidos (entero, real,
carcter, pixel...)
Atmico enumerativo (color, da de la
semana...)
Coleccin
Composicin (referencias objetos)
* Valor del atributo
Comn a muchos objetos (variable de
clase)
Propio de un objeto (variable de objeto)

13
Identificacin de
mtodos

* Mtodo: algoritmo que utiliza y


modifica los atributos de una clase
* Un mtodo es desencadenado por un
mensaje
* Funcionalidad de la clase: conjunto
de sus mtodos
* El conjunto de mtodos debe ser:
Completo (realizan toda la
funcionalidad de la clase)
General (se aplican a todos los objetos
de la clase)
Diferenciado (cada mtodo debe ser
simple y realizar una sola funcin)
14
Definicin de un mtodo

* Tipos de mtodos
Modificador (asigna valor a un atributo)
Selector (devuelve el valor de un
atributo)
Aplicable a la clase (constructor)
Aplicable al objeto
* Parmetros del mtodo
Qu informacin necesita?
(argumentos de entrada)
Qu debe devolver? (resultado y
argumentos de salida)

15
Identificacin de los
errores

* Qu puede salir mal durante la


ejecucin de un mtodo?
* Qu comprobaciones debe hacer
cada mtodo?
* Cmo interceptar y corregir las
condiciones de error?

16
Metodologas de
Anlisis y Diseo
(OOA/OOD)
Ms extendidos a principios de los
90 (flecha vertical)
Booch (OOAD) Jacobson (OOSE)

CASEIode (CCM) Olivetti (OGROUP)

Coad-Yourdon- Martin-Odell
Nicola (OOA,OOD) (OOIE)
NE University TASKON
(Demeter) (OORAM)
Object Engin. Winter (OSMOSYS)
(Fresco) Rumbaugh (OMT)
Hewlett-Packard LBMS (SE/OT)
(Fusion) Shlaer/Mellor
Graham (SOMA) (OOSA)
Texas Instruments CCTA (SSADM)
(IE\O) Wirfs-Brock (RDD)
ICL (MTD) Lloyds Register
ParcPlace (OBA) (Z++)
17
Metodologas de Anlisis y
Diseo (OOA/OOD)

* Booch (OOAD)
* Rumbaugh (OMT)
* Jacobson (OOSE)
* UML (Unified Modelling Language)
Lenguaje visual
Unin de los tres anteriores
Estndar internacional (OMG)
Versin actual: 2.0
* UP (Unified Process)
Metodologa de diseo iterativo
Basada en casos de uso
Incorpora UML de forma natural

18
OOAD (Booch)

Tipos de relaciones

* Herencia o Generalizacin
* Agregacin o Composicin
* Asociacin
* Metaclase
* Instanciacin (plantillas)
* Cliente-Servidor (acceso)

19
OOAD (Grady Booch)

Tipos de clases

* Clases ordinarias
* Metaclases
* Categoras de clases
* Clases parametrizadas (plantillas)
* Clases instanciadas (plantillas)
* Utilidades de clase: subprogramas
libres y clases estticas

20
Partes de UML

* Vistas
Conjunto de diagramas
* Diagramas
9 tipos de grafos
Combinan los elementos del modelo
* Elementos del modelo
Clases, objetos, mensajes, relaciones
* Mecanismos generales
Comentarios, informacin, semntica,
extensiones y adaptaciones

21
VISTAS

* Vista de Casos de Uso


Funcionalidad externa del sistema
* Vista Lgica
Estructura esttica y conducta dinmica
del sistema
* Vista de Componentes (software)
Organizacin de las componentes
* Vista de Concurrencia
Comunicaciones y sincronizacin
* Vista de Despliegue (deployment)
Arquitectura fsica

22
Las Vistas en UML

lgica

Casos
uso
conc
comp

despliegue

23
Vista de Casos de Uso

* Dirigida al Anlisis de Requisitos (lo que


quiere hacer el usuario)
* Describe la funcionalidad del sistema,
como la perciben los actores externos
* Dirige el desarrollo de las otras vistas
* Define los objetivos finales del sistema
* Permite validar el sistema
* Actor externo:
Usuario
Otro sistema
* Se plasma en diagramas
de Casos de Uso
de Actividad

24
Vista Lgica

* Describe la funcionalidad interna


* Dirigida a diseadores y
desarrolladores
* Define la estructura esttica
Clases, objetos y relaciones
* Define las colaboraciones dinmicas
Mensajes y funciones
* Propiedades adicionales
Persistencia y concurrencia
Interfaces y estructura interna de las
clases

25
Vista Lgica

* Se plasma en diagramas
Estticos
de Clases

de Objetos

Dinmicos
de Estado

de Secuencia

de Colaboracin

de Actividad

26
Vista de Componentes

* Describe los mdulos del sistema y


sus dependencias
* Dirigida a desarrolladores
* Se plasma en diagramas
de Componentes

27
Vista de Concurrencia

* Describe la divisin del sistema en


procesos y procesadores
* Dirigida a desarrolladores e
integradores
* Resuelve problemas de
uso eficiente de los recursos
ejecucin en paralelo (hilos)
comunicacin y sincronizacin de hilos
* Se plasma en diagramas
dinmicos
de Componentes
de Despliegue

28
Vista de Despliegue

* Muestra la distribucin fsica del


sistema (ordenadores, dispositivos) y
sus conexiones
* Dirigida a desarrolladores,
integradores y probadores
* Se plasma en
el diagrama de Despliegue
el mapa de asignacin de componentes
a la arquitectura fsica

29
Tipos de Diagramas

* De Casos de Uso
* Estticos
de Clases
de Objetos
* Dinmicos
de Estado
de Secuencia
de Colaboracin
de Actividad
* De Componentes
* De Despliegue (deployment)

30

You might also like