Vous êtes sur la page 1sur 43

Programacin Avanzada

Diseo

Contenido

Introduccin Objetivos Arquitectura Lgica Diseo de Bajo Nivel

Programacin Avanzada | Diseo

Introduccin

Durante el anlisis un caso de uso fue reformulado en trminos de interacciones entre los actores y el sistema (DSS) El efecto de cada mensaje fue especificado en forma precisa (Contrato) Es el momento de definir cmo hace el sistema internamente para resolver cada una de las operaciones del sistema
3

Programacin Avanzada | Diseo

Introduccin (2)

La Arquitectura de Software busca expresar la estructura global de una aplicacin El nivel de abstraccin empleado para expresar dicha estructura es mayor que el empleado para detallar la solucin al problema de software planteado El objetivo de la arquitectura no es detallar la solucin adoptada sino que es proveer una visin global de la misma para simplificar su comprensin
4

Programacin Avanzada | Diseo

Introduccin (3)

Uno de los puntos de vista desde donde se suele estudiar la estructura de una aplicacin es la estructura interna La arquitectura desde ese punto de vista se denomina Arquitectura Lgica A definir cmo se resuelven las operaciones del sistema en esta estructura se le llama diseo de bajo nivel (o simplemente diseo)
5

Programacin Avanzada | Diseo

Objetivos

Definir la estructura interna del sistema a construir Realizar el diseo de las operaciones del sistema

Programacin Avanzada | Diseo

Arquitectura Lgica

La arquitectura lgica se define como un conjunto de componentes lgicos relacionados entre s, con responsabilidades especficas Estos componentes se obtienen a partir la sucesiva particin del sistema en componentes con responsabilidades ms concretas (enfoque top-down)
7

Programacin Avanzada | Diseo

Arquitectura Lgica (2)

Existen guas de particionamiento Cada una de ellas propone


Un tipo de particin particular Asignacin de responsabilidades a los componentes resultantes

Se denominan estilos o patrones de arquitectura La eleccin del estilo a aplicar depende del tipo de sistema que se est construyendo
8

Programacin Avanzada | Diseo

Aspectos de una Aplicacin

El diseo de un sistema de software comprende la resolucin de mltiples aspectos de una aplicacin La forma en que esos aspectos sean resueltos determina la flexibilidad del diseo Desde un punto de vista lgico es preferible separar el diseo de aspectos diferentes para

Permitir que evolucionen independientemente Simplificar el problema y tener mejor visibilidad de las partes que componen la aplicacin
9

Programacin Avanzada | Diseo

Aspectos de una Aplicacin (2)

Disear e implementar en forma conjunta diferentes aspectos

Usualmente simplifica la arquitectura, pero Complica el diseo

La separacin de aspectos generalmente


Complica la arquitectura (estructura general) Simplifica el diseo de cada uno al permitir enfocarse en cada aspecto por separado
10

Programacin Avanzada | Diseo

Aspectos de una Aplicacin (3)


class Persona { //atributos
Aspectos de presentacin

void mostrar() { write(atributos); }

Aspectos de lgica de la aplicacin

void procesar(entrada) { //hacer algo con entrada y atributos } void guardar() { write(arch,atributos); }
}
Programacin Avanzada | Diseo

Aspectos de acceso a la persistencia de datos


11

Aspectos de una Aplicacin (4)

En el ejemplo anterior se detectan fragmentos de cdigo con diferentes propsitos en una misma clase

Cdigo para procesar la informacin existente que implementa la lgica de la aplicacin, Cdigo de interaccin con el usuario, y Cdigo que sirve para almacenar los datos en un medio persistente

Programacin Avanzada | Diseo

12

Aspectos de una Aplicacin (5)

Esto es comn a la mayora de los sistemas de informacin interactivos Se puede decir que estas aplicaciones abarcan bsicamente tres aspectos

Presentacin: incluye todo lo referente a la interaccin del sistema con los usuarios en el mundo exterior Lgica: se encarga del procesamiento particular que el sistema deba realizar sobre la informacin que maneja Persistencia: consiste en el almacenamiento persistente de dicha informacin
13

Programacin Avanzada | Diseo

Aspectos de una Aplicacin (6)


Incluir los tres aspectos en una misma clase no resulta flexible La clase completa queda dependiente de

La forma en que los datos son mostrados u obtenidos del usuario, y adems de La forma en que los datos son almacenados

Es deseable establecer una separacin de dichos aspectos Es decir, mantener el cdigo referente a cada aspecto en clases separadas
14

Programacin Avanzada | Diseo

Aspectos de una Aplicacin (7)

Esto sugiere un criterio concreto de particin de componentes


Presentacin

Lgica

Persistencia

Programacin Avanzada | Diseo

15

Arquitectura en Capas

Una Arquitectura en Capas es la arquitectura de un sistema que haya sido particionado segn el estilo de Capas

Define diferentes niveles de elementos Los elementos de un mismo nivel tienen responsabilidades de abstraccin similar Los elementos de un nivel estn para atender los pedidos de los elementos del nivel superior
16

Programacin Avanzada | Diseo

Arquitectura en Capas (2)


3 2
Pedido

1
Respuesta

Programacin Avanzada | Diseo

17

Arquitectura en Capas (3)


La particin definida anteriormente es compatible con el estilo de Capas Se definen por lo tanto las siguientes capas

Presentacin Lgica Persistencia

Los actores utilizan solamente la capa de presentacin La capa de persistencia no requiere de los servicios de ninguna otra
18

Programacin Avanzada | Diseo

Arquitectura en Capas (4)


Presentacin Interfaz del sistema (contiene operaciones del sistema) Lgica

Persistencia

Programacin Avanzada | Diseo

19

Arquitectura en Capas (5)

Qu hay en cada capa?

Presentacin: clases que se encargan de capturar la entrada de los usuarios y mostrar informacin
Lgica:

Clases que describen los objetos que procesarn la informacin para satisfacer los casos de uso del sistema Clases que permiten a las anteriores acceder a los datos

Persistencia: datos del sistema que necesiten ser preservados (texto plano, base de datos, etc.)
20

Programacin Avanzada | Diseo

Arquitectura en Capas (6)

Usualmente la capa lgica es refinada de la siguiente manera


ISistema Lgica

Servicios del Sistema

Es este elemento el que realiza la(s) interfaz(ces) del sistema

Acceso a Datos

Programacin Avanzada | Diseo

21

Arquitectura en Capas (7)

Ejemplo
IRetiro

Lgica
Serv. Sistema

Cajero
ingresarTarjeta() ingresarPIN() seleccionarCuenta()

Present.

Menu
mostrarMenu()

21/4/2005; 1001-345-7612; $U 1200,00

Transaccion

Acceso a Datos
Programacin Avanzada | Diseo 22

Operaciones del Sistema

Los Diagramas de Secuencia del Sistema ilustran la forma en que los actores realizan invocaciones sobre el sistema Al estudiar la Arquitectura Lgica es posible profundizar en los detalles de cmo se realizan dichas invocaciones

Programacin Avanzada | Diseo

23

Operaciones del Sistema (2)


Evento del Sistema
: Sistema : Cliente
Menu
Presentacin

ingresarPIN()

ingresarTarjeta()
mostrarMenu()

: Cliente

ingresarPIN()
ingresarPIN()

seleccionarCuenta()

Serv. Sistema

. . .

Cajero
ingresarTarjeta() ingresarPIN() seleccionarCuenta()

Operacin del sistema

Programacin Avanzada | Diseo

24

Implementacin
// pertenece en forma lgica a la Capa de Presentacin class Menu { IRetiro atm; void mostrarMenu() { // leer en t el nmero de tarjeta atm.ingresarTarjeta(t); // leer en p el nmero de PIN atm.ingresarPIN(p); // leer en c el nmero de cuenta atm.seleccionarCuenta(c); . . }
Programacin Avanzada | Diseo 25

Implementacin (2)
// pertenecen en forma lgica a la Capa Lgica interface IRetiro { void ingresarTarjeta(); void ingresarPIN(); void seleccionarCuenta(); } class Cajero public public public . . }
Programacin Avanzada | Diseo

realize IRetiro { void ingresarTarjeta() {...} void ingresarPIN {...} void seleccionarTarjeta() {...}

26

Diseo de Bajo Nivel

Tenemos definida la estructura interna del sistema a construir (Arquitectura Lgica) A partir de dicha estructura definimos cmo se resuelven internamente cada una de las operaciones del sistema En este curso, el diseo de bajo nivel estar enfocado en la capa lgica

Programacin Avanzada | Diseo

27

Objetivos

Disear Colaboraciones que realicen los Casos de Uso del sistema

Se busca disear una colaboracin por cada caso de uso (o varios de ellos juntos) Una colaboracin realiza un conjunto de casos de uso cuando define su solucin Esta relacin es la misma que se puede definir entre una interfaz y un conjunto de clases
Relacin de Realizacin Caso de Uso Colaboracin
28

Programacin Avanzada | Diseo

Colaboracin

Una Colaboracin est compuesta por

Una Estructura: que indica

Las clases de objetos que participan en la solucin de los casos de uso Los atributos de las mismas y sus relaciones Las operaciones que pueden ser invocadas sobre sus instancias

Interacciones: que definen la forma en que objetos de las clases dadas se comunican para obtener el resultado deseado
29

Programacin Avanzada | Diseo

Colaboracin (2)

La estructura de la colaboracin indica quin participa y sus propiedades Las interacciones de la colaboracin indican cmo los participantes logran el resultado Las colaboraciones aparecen especificadas en el Modelo de Diseo

Programacin Avanzada | Diseo

30

Colaboracin (3)

Por lo tanto una Colaboracin que realice un conjunto de Casos de Uso contendr

La estructura de los participantes Una interaccin en trminos de dichos participantes para cada operacin del sistema

En cada interaccin se detalla la forma en que la operacin del sistema es resuelta

Programacin Avanzada | Diseo

31

Enfoque

Existen dos enfoques para disear una colaboracin

Definir primero la estructura y luego generar las diferentes interacciones respetndola Definir libremente las interacciones y luego definir la estructura necesaria para que stas puedan ocurrir

En el curso seguiremos el segundo enfoque


32

Programacin Avanzada | Diseo

Actividades

Para lograr los objetivos planteados realizaremos las siguientes actividades


Diseo de interacciones Diseo de la estructura

Programacin Avanzada | Diseo

33

Diseo de Interacciones

Consiste en definir comunicaciones entre objetos que permitan resolver operaciones del sistema Esta definicin se realiza libremente

Los protagonistas aparecen sugeridos en el Modelo de Dominio El resultado es el especificado en el contrato de la operacin del sistema a disear

La libertad est dada en los mensajes que los protagonistas se puedan enviar entre s Herramienta: Diagrama de Comunicacin
34

Programacin Avanzada | Diseo

Diseo de la Estructura

Consiste en especificar completamente la estructura necesaria para que todas las interacciones puedan ocurrir

Se busca especificar la estructura de una colaboracin Por lo tanto es necesario considerar todas las interacciones del caso de uso que la colaboracin realiza Recordar que se define una interaccin por cada operacin del sistema
35

Herramienta: Diagrama de Clases de Diseo

Programacin Avanzada | Diseo

Consideraciones

Durante la etapa de diseo de una metodologa iterativa e incremental se obtienen un conjunto de colaboraciones que comprenden todos los casos de uso del sistema En consecuencia, se obtiene un diagrama de comunicacin por operacin del sistema y un conjunto de DCDs, uno por colaboracin Los DCD pueden requerir algn tipo de revisin general de alguien con una visin global de la solucin a los efectos de eliminar inconsistencias
36

Programacin Avanzada | Diseo

Consideraciones (2)

Durante el diseo la idea clave es la de asignacin de responsabilidades La asignacin de responsabilidades se realiza (en parte) definiendo operaciones para los participantes de la solucin Es posible definir diferentes interacciones para lograr un mismo efecto Esto es asignando responsabilidades en maneras diferentes
37

Programacin Avanzada | Diseo

Consideraciones (3)

A pesar de que pueden existir varias soluciones no todas tienen buenas cualidades (flexibilidad, extensibilidad, adaptabilidad, etc.) Buscaremos encontrar soluciones que adems presenten buenas cualidades Para ello utilizaremos criterios de asignacin de responsabilidades Estos criterios buscan evitar la toma de malas decisiones al momento de asignar responsabilidades
38

Programacin Avanzada | Diseo

Modelo de Diseo

El Modelo de Diseo es una abstraccin de la solucin lgica al problema Incluye todas las clases de objetos (y otros elementos) que conforman la estructura necesaria para el funcionamiento del sistema Dichos elementos pueden estar eventualmente organizados en paquetes de diseo
39

Programacin Avanzada | Diseo

Modelo de Diseo (2)

El Modelo de Diseo tambin incluye las interacciones que realizan los casos de uso Una interaccin est expresada en trminos de elementos de diseo del modelo

Programacin Avanzada | Diseo

40

Modelo de Diseo (3)

Contenido

Introduccin: Breve descripcin que sirve como introduccin al modelo Clases: Las clases del modelo Interfaces: Las interfaces del modelo

Programacin Avanzada | Diseo

41

Modelo de Diseo (4)

Contenido (cont.)

Relaciones: Las relaciones del modelo entre clases e interfaces Colaboraciones: Las realizaciones de casos de uso del modelo Diagramas: Representacin de los elementos del modelo

Programacin Avanzada | Diseo

42

Resumen
Esc. Tpico Esc. Alternat. 1 . . . Esc. Alternat. n

Message1
: Sistema : Cajero iniciarVenta() agregarProducto(id,cant) descripcion, subtotal * [mas productos] terminarVenta() total con impuestos realizarPago(monto) cambio, recibo

Cont. 1 Cont. 2

Object1 Message2

Object2

Object3 Message1 Object1 Message2 Object3 Object2

: Sistema : Cajero iniciarVenta() agregarProducto(id,cant) descripcion, subtotal * [mas productos] terminarVenta()

Caso de Uso

Cont. 1
Message1

total con impuestos realizarPago(monto) cambio, recibo

Cont. 3
: Sistema

Object1 Message2

Object2

Object3

: Cajero iniciarVenta() agregarProducto(id,cant)

* Class1 -atr1

Association1

Class4 -atr3 -atr4

descripcion, subtotal * [mas productos] terminarVenta() total con impuestos

Cont. 1
Message1

* Class2 Class3 -atr2

* Association2

realizarPago(monto) cambio, recibo

Cont. 4

Object1 Message2

Object2

Object3

Class4 Class1 -atr1 +oper1() * Association1 * -atr3 -atr4 +operacion1() +operacion2() +oper5()

Class2

Class3 -atr2 +oper4()

* Association2

Colaboracin
Programacin Avanzada | Diseo

+oper2() +oper3()

43

Vous aimerez peut-être aussi