Está en la página 1de 34

Anlisis y Diseo Orientado a Objetos

Manuel Alfonseca Roberto Moriyn

Ciclo vital del software I


Ciclo tradicional

Modelo en cascada Anlisis (qu) Diseo (cmo) Codificacin (hacerlo) Pruebas (funciona?) Mantenimiento (no)

Ciclo vital del software II


*

Ciclo evolutivo

Ciclo

{
*

Modelo en espiral Definicin de un subsistema (descomposicin funcional) Construccin de un modelo (qu clases se requieren) Anlisis de clase(s) 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 Escaso acoplamiento externo y fuerte cohesin interna Efectos laterales mnimos (encapsulamiento) Programacin por extensin Orientado a datos Explota la herencia (jerrquico) Reutilizacin de clases Fcil de modificar

* *

* * * * *

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

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

Descomposicin funcional
*

* *

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

OOD
Mdulos construidos alrededor de las clases Clases escasamente acopladas, sin datos globales Encapsulamiento y mensajes Diagramas jerrquicos de clases

* *

Ventajas de OOD
Mdulos con fuerte cohesin interna y escaso acoplamiento externo Facilita el funcionamiento en entorno multiprocesador 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 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) Comn a muchos objetos (variable de clase) Propio de un objeto (variable de objeto)

Valor del atributo

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 Qu informacin necesita? (argumentos de entrada) Qu debe devolver? (resultado y argumentos de salida)

Parmetros del mtodo

15

Identificacin de los errores


*

Qu puede salr mal durante la ejecucin de un mtodo? Qu comprobaciones debe hacer cada mtodo? Cmo interceptar y corregir las condiciones de error?

16

UML
Unified Modeling Language
Manuel Alfonseca Roberto Moriyn

17

Metodologas de Anlisis y Diseo (OOA/OOD)


Booch

(OOAD) (CCM) Coad-YourdonNicola (OOA,OOD) NE University (Demeter) Object Engin. (Fresco) Hewlett-Packard (Fusion) Graham (SOMA) Texas Instruments (IE\O) ICL (MTD) ParcPlace (OBA)
CASEIode

(OOSE) (OGROUP) Martin-Odell (OOIE) TASKON (OORAM) Winter (OSMOSYS) Rumbaugh (OMT) LBMS (SE/OT) Shlaer/Mellor (OOSA) CCTA (SSADM) Wirfs-Brock (RDD) Lloyds Register (Z++)
Olivetti
18

Jacobson

Metodologas de Anlisis y Diseo (OOA/OOD)


* * * *

Booch (OOAD) Rumbaugh (OMT) Jacobson (OOSE) UML


Unin de las tres anteriores Estndar internacional

19

OOAD (Booch)

Tipos de Relaciones Herencia o Generalizacin Agregacin o Composicin

Metaclase Instanciacin (templates) ClienteServidor (Using)


20

Asociacin

OOAD (Grady Booch)

Tipos de clases
* * * * * *

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

21

Partes de UML
Vistas

Conjunto de diagramas 9 tipos de grafos Combinan los elementos del modelo Clases, objetos, mensajes, relaciones Comentarios, informacin, semntica, extensiones y adaptaciones

Diagramas

Elementos del modelo

Mecanismos generales

22

VISTAS
Vista de Casos de Uso

Funcionalidad externa del sistema Estructura esttica y conducta dinmica del sistema Organizacin de las componentes Comunicaciones y sincronizacin Arquitectura fsica

Vista Lgica

Vista de Componentes

Vista de Concurrencia

Vista de Despliegue (deployment)

23

Las Vistas en UML

Vista de componentes

Vista lgica

Vista de casos de uso


Vista de despliegue

Vista de concurrencia

24

Vista de Casos de Uso


Dirigida al Anlisis de Requisitos 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 de Casos de Uso de Actividad


25

Se plasma en diagramas

Vista Lgica
Describe la funcionalidad interna Dirigida a diseadores y desarrolladores Define la estructura esttica

* *

Clases, objetos y relaciones Mensajes y funciones Persistencia y concurrencia Interfaces y estructura interna de las clases

Define las colaboraciones dinmicas

Propiedades adicionales

26

Vista Lgica
Se plasma en diagramas

Estticos de Clases de Objetos Dinmicos de Estado de Secuencia de Colaboracin de Actividad

27

Vista de Componentes
Describe los mdulos del sistema y sus dependencias Dirigida a desarrolladores Se plasma en diagramas

* *

de Componentes

28

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 dinmicos de Componentes de Despliegue
29

Se plasma en diagramas

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

30

Tipos de Diagramas
De Casos de Uso Estticos

* *

de Clases de Objetos de Estado de Secuencia de Colaboracin de Actividad

Dinmicos

* *

De Componentes De Despliegue (deployment)


31

Diagramas de Casos de Uso


Anlisis de requisitos Describen la funcionalidad externa del sistema Pueden escribirse en lenguaje natural Se llaman tambin escenarios

Introducir contrasea

Control de cuentas

Sacar dinero Comunicar con banco

Usuario

Cajero Banco

Cajero automtico

32

Escenario (secuencia de eventos)


Llamada telefnica
*

* * * * * * * * * * *

Origen levanta receptor Suena tono de llamada Origen marca cifra (9) Para tono de llamada Origen marca cifra (1) Origen marca cifra (3) Origen marca cifra (9) Origen marca cifra (7) Origen marca cifra (4) Origen marca cifra (4) Origen marca cifra (6) Origen marca cifra (7)

* * * * * * * *

Suena alarma destino Suena seal origen Destino responde Para alarma destino Para seal origen Conexin Destino cuelga Origen cuelga

33

Ejemplo de escenario
Mientras exploran un castillo, A y B descubren lo que parece ser la entrada de un corredor secreto. Mientras A examina la puerta, B retira una vela del candelabro. En ese momento, la puerta gira 180, llevndose a A consigo. B vuelve a colocar la vela en el candelabro. La puerta gira 360 y A vuelve a quedar separado de B. B saca de nuevo la vela. La puerta gira 360, pero esta vez A le impide cerrarse con su cuerpo. B pasa la vela a A. Los dos amigos fuerzan a la puerta a retroceder 180 y de nuevo quedan separados, pero ahora B est dentro y A junto al candelabro. A pone la vela en el candelabro. Cuando la puerta empieza a girar, A saca la vela. La puerta se detiene tras girar 90. A y B penetran en el corredor para explorarlo.
34

ANALISIS: Modelo Dinmico


FASES:
*

Preparar escenarios detallados a partir de casos de uso


Normales Con problemas

* * * *

Identificar sucesos Construir diagramas de estados (uno/clase) Comprobar consistencia (iterar) Aadir mtodos

35

ANALISIS: Modelo de Objetos


Cuarta Fase: Aadir herencia Resultado: Primer diagrama de clases Quinta fase: Comprobar de los casos de uso Desde el punto de vista esttico Iterar Sexta fase: Modularizar Agrupar clases en mdulos Sptima fase: Aadir y simplificar mtodos Todos los atributos se suponen accesibles Mtodos para navegar de un objeto a otro
36

Diagramas estticos
Elementos: Objetivos:

Objetos Clases Herencia



(Generalizacin)

Diagrama de clases Diccionario de datos

Agregacin
(Delegacin)

Relaciones
Asociativas

37

Smbolo de una clase

Una clase:

Cliente &atr [: tipo [ = valor ] ] ... &met[([parms])[:tipo]] ...

Nombre Atributos

Mtodos

&:Visibilidad opcional + pblico (por omisin para mtodos) - privado (por omisin para atributos) # protegido

38

Tipos de Relaciones
Dependencia: Herencia (Generalizacin):
Superclase

Agregacin:
Agregado

m m

Subclase

Subclase

Parte

Parte

Implementacin: Multiplicidad:

Clase

interfaz

1 1..* 0..1 0..* * 1-3,5 ...


39

Relaciones de Asociacin
Asociacin:
m
Clase nombre

m
Clase

Asociacin restringida:
Clase
{restriccin}

Clase

Asociacin cualificada:
Clase Cualificador Clase

Clase Asociacin:
Clase
Nombre asociacin atributo enlace mtodo enlace

Clase

Multiplicidad:

1 1..* 0..1 0..* * 1-3,5 ...


40

Diagramas de Clases y de Objetos


*

Diagrama de clases:

Muestra la estructura esttica de las clases (combina clases y relaciones) Diagrama de objetos Muestra objetos concretos con la misma notacin Nombres de objetos subrayados
OTJuan:Ordenador nombre=IBM A36 memoria=64 OCJuan:Ordenador nombre=Clon1 memoria=32

Diagrama de objetos:

Juan:Programador nombre=Juan edad=25

41

Diagramas dinmicos
Elementos:

Objetivos:

Eventos Estados de un objeto Escenarios Traza de eventos Concurrencia Sincronizacin Acciones

Diagramas de estados Diagrama de colaboracin

42

Descripcin de un estado
Estado: Suena la alarma Descripcin: Suena la alarma del reloj para
indicar que ha llegado la hora predeterminada

Se llega a l despus de la secuencia: set alarm (objetivo) cualquier secuencia que no incluya clear alarm hora actual = objetivo Condicin:
alarm=on && objetivo<=hora actual <= objetivo+20s && no se ha pulsado ningn botn desde objetivo

Acepta: button pushed(any) pasa al estado normal hora actual=objetivo+20 pasa a normal
43

Diagramas de Estados
Autmata finito determinista Se aplica a una sola clase o al sistema Las entradas son mensajes Un mensaje recibido es un evento
Nombre del estado Variables de estado
entry / accin de entrada exit / accin de salida do / actividad-A help / actividad-A

* * * *

(opcional) (actividad interna)

Estado inicial

Mensaje (evento)

Otro estado

Alto

44

Diagramas de Secuencia
Tambin llamados trazas de eventos El tiempo crece verticalmente hacia abajo

* *

:Receptor

:Lnea

:Receptor

Origen levanta receptor Suena tono de llamada Origen marca cifra (3) Para tono de llamada Origen marca cifra (9)

...
Suena seal origen Suena alarma destino Destino responde

. . .

45

Diagrama de Colaboracin
*

Combina un diagrama de objetos y uno de secuencia Se llama tambin diagrama de flujo de eventos
1.levanta receptor 3.marca cifra 10.cuelga 5.suena alarma 8.para alarma 9.conexin 11.fin conexin

:Receptor

:Lnea

:Receptor

2.suena tono llamada 4.para tono llamada 5.suena seal origen 7.para seal 9.conexin 11.fin conexin

6.descuelga 10.cuelga

46

Diagramas de Actividad
Llamados tambin Diagramas de Flujo de Actividad Estados de Accin (se sale de ellos cuando termina su accin, sin esperar un evento)
[Puls Cancelar] Pide contrasea [Contrasea escrita] Comprueba contrasea Muestra mensaje

...

[Contrasea correcta]

[No coincide]

Muestra mensaje 47

Diagrama de Componentes
* * *

Estructura fsica del cdigo Componentes fuente, objeto o ejecutables Pueden formar paquetes
Gestor Ventanas
(win.cpp)

Gestor Ventanas
(win.obj)

Bibl. grfica
(graph.lib)

Gestor Comu.
(com.cpp)

Gestor Comu.
(com.obj)

Prog. cliente
(client.exe)

Clase main
(main.cpp)

Clase main
(main.obj)

48

Diagrama de Despliegue
Muestra la arquitectura fsica del hardware y del software del sistema Nodos: ordenadores y dispositivos Conexiones de diversos tipos

* *

ClienteA: Compaq

TCP/IP

Servidor Aplic.: SUN ClienteB: IBM


TCP/IP

DecNet

Servidor Base d.: VAX

49

Smbolos
Clase Atributos Mtodos Objeto Atributos Estado Mtodos

Caso de Uso

Nodo Interfaz

Paquete

Nota

Componente

Dependencia Generalizacin

Asociacin Agregacin

50

ANALISIS

REQUISITOS Definidos conjuntamente por el usuario y el analista Lenguaje natural Casos de uso (I. Jacobson) De ellos se sacan los tres modelos a nivel de anlisis Modelo de Objetos Modelo Dinmico Modelo Funcional
51

ANALISIS: Modelo de Objetos


FASES:
* * * * * * *

Identificar objetos y clases Identificar y depurar relaciones Identificar atributos de objetos y relaciones Aadir herencia Comprobar los casos de uso (iterar) Modularizar Aadir y simplificar mtodos

52

ANALISIS: Modelo de Objetos


Primera Fase: Identificar objetos y clases Resultado: Diccionario de clases
* * * * * * * *

Seleccionar nombres de los requisitos Aadir clases por conocimiento del tema Eliminar redundancias Eliminar clases irrelevantes Eliminar clases vagas Separar atributos Separar mtodos Eliminar objetos de diseo

53

ANALISIS: Modelo de Objetos


Segunda Fase: Identificar y depurar relaciones Resultado: Esqueleto del diagrama de clases sin
herencia

* * * * * * * *

Seleccionar verbos de relacin en requisitos Aadir relaciones (conocimiento del tema) Eliminar relaciones de diseo Eliminar eventos transitorios Reducir relaciones ternarias Eliminar relaciones redundantes/derivadas Aadir relaciones olvidadas Definir la multiplicidad de cada relacin
54

ANALISIS: Modelo de Objetos


Tercera Fase: Identificar atributos objetos/relaciones Resultado: Esqueleto del diagrama de clases con
atributos

* * * * * *

Distinguir objetos de atributos Distinguir atributos de objeto y de relacin El identificador de objeto es siempre un atributo implcito Eliminar atributos privados (diseo) Eliminar atributos de detalle fino Localizar atributos discordantes (dividir clase)

55

ANALISIS: Modelo Dinmico


Segunda Fase: Identificar sucesos Resultado: Trazas de eventos Resultado: Diagramas de flujo de eventos
* * * * * * *

Seales Entradas Decisiones Interrupciones Transiciones Acciones externas Condiciones de error

56

ANALISIS: Modelo Dinmico


Quinta Fase: Aadir mtodos
*

Eventos como mtodos


(de quin?)

Acciones y actividades en los estados

57

ANALISIS: Modelo Funcional


FASES:
* * * *

* *

Identificar valores de entrada/salida Construir diagramas de flujo de datos Describir funciones Identificar restricciones y dependencias funcionales entre objetos Definir criterios de optimizacin (iterar) Aadir mtodos (funciones de diagramas de flujo de datos)
58

Diseo del Sistema


* * *

* * * * *

Definicin de subsistemas Indentificacin de la concurrencia intrnseca y entre tareas Asignacin de subsistemas a procesadores y tareas (diseo de hardware) Gestin de datos (Bases de datos) Gestin de recursos globales Seleccin del control del software Condiciones lmite Establecimiento de prioridades

59

Diseo del sistema

Definicin de subsistemas
* * *

Capas Particiones Flujo de informacin (data flow)

60

Diseo del sistema

Seleccin del control de software


* * * *

Procedure-driven Event-driven Programacin concurrente Programacin lgica

61

Diseo del sistema

Condiciones lmite
* * *

Iniciacin Terminacin Fallos

62

Grandes tipos de sistemas


* * * * * *

Batch Transformacin continua Interfaz interactiva Simulacin dinmica Tiempo real Gestin de transacciones

63

Diseo de objetos
Combinacin de los tres modelos Diseo de algoritmos Optimizacin del acceso a los datos Implementacin del control de software Ajuste de la herencia Diseo de relaciones Diseo de atributos Modularizacin

* * * * * * * *

64

Diseo de objetos

Combinacin de los tres modelos


*

Asignacin de mtodos a clases

Los procesos del modelo funcional son mtodos del de objetos Los eventos del modelo dinmico son mtodos del de objetos

65

Diseo de objetos

Diseo de algoritmos
* * *

Eleccin del algoritmo ptimo Eleccin de las estructuras de datos Definicin de clases y mtodos auxiliares Decidir a quin asignar los mtodos dudosos

66

Diseo de objetos

Optimizacin del acceso a los datos


* * *

Aadir relaciones redundantes Optimizar la eficiencia Guardar valores para su uso posterior

67

También podría gustarte