Académique Documents
Professionnel Documents
Culture Documents
Diseo
Contenido
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
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
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
Objetivos
Definir la estructura interna del sistema a construir Realizar el diseo de las operaciones del sistema
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
Se denominan estilos o patrones de arquitectura La eleccin del estilo a aplicar depende del tipo de sistema que se est construyendo
8
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
Complica la arquitectura (estructura general) Simplifica el diseo de cada uno al permitir enfocarse en cada aspecto por separado
10
void procesar(entrada) { //hacer algo con entrada y atributos } void guardar() { write(arch,atributos); }
}
Programacin Avanzada | Diseo
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
12
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
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
Lgica
Persistencia
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
1
Respuesta
17
La particin definida anteriormente es compatible con el estilo de Capas Se definen por lo tanto las siguientes capas
Los actores utilizan solamente la capa de presentacin La capa de persistencia no requiere de los servicios de ninguna otra
18
Persistencia
19
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
Acceso a Datos
21
Ejemplo
IRetiro
Lgica
Serv. Sistema
Cajero
ingresarTarjeta() ingresarPIN() seleccionarCuenta()
Present.
Menu
mostrarMenu()
Transaccion
Acceso a Datos
Programacin Avanzada | Diseo 22
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
23
ingresarPIN()
ingresarTarjeta()
mostrarMenu()
: Cliente
ingresarPIN()
ingresarPIN()
seleccionarCuenta()
Serv. Sistema
. . .
Cajero
ingresarTarjeta() ingresarPIN() seleccionarCuenta()
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
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
27
Objetivos
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
Colaboracin
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
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
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
31
Enfoque
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
Actividades
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
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
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
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
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
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
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
40
Contenido
Introduccin: Breve descripcin que sirve como introduccin al modelo Clases: Las clases del modelo Interfaces: Las interfaces del modelo
41
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
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
Caso de Uso
Cont. 1
Message1
Cont. 3
: Sistema
Object1 Message2
Object2
Object3
* Class1 -atr1
Association1
Cont. 1
Message1
* Association2
Cont. 4
Object1 Message2
Object2
Object3
Class4 Class1 -atr1 +oper1() * Association1 * -atr3 -atr4 +operacion1() +operacion2() +oper5()
Class2
* Association2
Colaboracin
Programacin Avanzada | Diseo
+oper2() +oper3()
43