SlideShare una empresa de Scribd logo
1 de 50
Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
Contenidos de la Unidad 3 Diseño Orientado a Objetos I ,[object Object],Craig Larman , Cap 15. ,[object Object],  Cap. 16 ,[object Object],  Cap. 17 ,[object Object],  ,[object Object],  ,[object Object],Cap. 18 ,[object Object],  ,[object Object],  ,[object Object],  ,[object Object], 
PATRONES PARA ASIGNAR RESPONSABILIDADES (GRASP) Craig Larman, Cap. 18 Ingeniería en Sistemas de Información
DISEÑO DE SISTEMAS INTRODUCCIÓN Un sistema orientado a objetos se  compone de objetos que envían mensajes a otros objetos para que lleven a cabo operaciones. Los contratos incluyen una conjetura inicial óptima sobre las responsabilidades y las postcondiciones de las operaciones. Los diagramas de interacción describen gráficamente la solución – a partir de los objetos en interacción – que estas responsabilidades y postcondiciones satisfacen.
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP) Casos Reales de Uso Los Casos Reales de Uso presentan un diseño concreto de cómo se realizará el caso. Es una de las primeras actividades en el ciclo de desarrollo. Su creación depende de los casos esenciales generados con anterioridad. Un Caso Real de Uso describe el  diseño concreto del caso de uso  a partir de una tecnología particular de entrada y salida, y su implementación global. Por ejemplo, si hay una interfaz gráfica para el usuario, el caso de uso real incluirá diagramas de las ventanas en cuestión y una explicación de la interacción.
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP)
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],DISEÑO DE SISTEMAS Patrones (GRASP)    
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP) EXPERTO Problema ¿Cuál es el principio fundamental en virtud del cual se asignan las responsabilidades en el Diseño Orientado a Objetos?. Durante el DOO, cuando se definen las interacciones entre los objetos, tomamos decisiones sobre la asignación de responsabilidades a las clases. Si se hacen en forma adecuada, los sistemas tienden a ser más fáciles de entender, mantener y ampliar, y se nos presenta la oportunidad de reutilizar los componentes en futuras aplicaciones. Solución Asignar una responsabilidad al experto en información: la clase que cuenta con la información necesaria para cumplir la responsabilidad.
DISEÑO DE SISTEMAS Patrones (GRASP) Ejemplo En un negocio de ventas, se necesita conocer el importe total de una venta. ¿Quién es el responsable de conocer el importe total de la venta?. Desde el punto de vista del patrón Experto, se debe buscar la clase de objeto que posea la información para calcular el total.
DISEÑO DE SISTEMAS Diagramas de  Colaboración Modelo Conceptual o de Dominio  EspProducto descripción precio CUP Venta fecha hora VLP cantidad Contiene  V Descriptas_por 1..* 1 1
DISEÑO DE SISTEMAS Diagramas de  Colaboración ,[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Diagramas de  Colaboración Calculo del Total de la Venta 2.1 : p := precio () 2 : st := subtotal() t:= total()     EspProducto Desc Precio CUP Precio() :Venta Vli:=:VLP :EspProducto :VLP 1 *:[p/c] vli:= siguiente()     Venta fecha hora Total() VLP cantidad Subtotal()
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) CREADOR Problema ¿Quién es responsable de crear una nueva instancia de alguna clase?. Solución Asignarle a la clase B la responsabilidad de crear una instancia de clase A en uno de los siguientes casos: B “agrega” los objetos A. B “contiene” los objetos A. B “registra” las instancias de los objetos de A. B “utiliza” específicamente los objetos A. B “tiene los datos de inicialización” que serán transmitidos a A, cuando este objeto sea creado (así que B es un Experto respecto de A). B es un creador de los objetos de A. Si existe mas de una opción, prefiera la clase B que “agregue o contenga” la clase A.
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) En este Modelo Conceptual una Venta contiene muchos objetos VLP; por ello el patrón  Creador  sugiere que  Venta  es idónea para asumir la responsabilidad de crear la instancia VLP, y a partir de aquí podemos diseñar las interacciones de los objetos en un diagrama de colaboración.
DISEÑO DE SISTEMAS Patrones (GRASP) Creación de un objeto VentaLineadeProducto: Al asignar responsabilidades en un diagrama de colaboración => definimos en Venta un Método de  “hacerlíneadeProducto” . 1: crear(cantidad) hacerLineadeProducto(cantidad)     :Venta : VentaLinea deProducto Venta fecha  hora hacerLinea deProducto() total() Nuevo método
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP) Solución alternativa: En ambos casos suponemos que Venta terminará acoplándose al conocimiento de un Pago. El diseño 2 es preferible porque se conserva un menor acoplamiento global. :CAJA P: Pago : Venta 1: crear () 2: agregarPago (p) efectuarPago () :CAJA :  Venta : Pago 1: efectuarPago () efectuarPago () 1.1: crear ()  V
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) ALTA COHESIÓN Problema ¿Cómo mantener la complejidad dentro de límites manejables?: En el DOO, la  cohesión  es una medida de cuán relacionados y enfocados están las responsabilidades de una clase. Una alta cohesión caracteriza a las clases con responsabilidades estrechamente relacionadas para que no realicen un trabajo enorme. A menudo representan un alto grado de abstracción o han asumido responsabilidades que deberían haber delegado. Una clase con  baja cohesión  hace muchas cosas no afines o un trabajo excesivo.
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) Esta asignación de responsabilidad coloca en la clase  CAJA  la generación del pago. (patrón  Creador ).  Esto es aceptable. Pero si seguimos haciendo que la clase  CAJA  se encargue de efectuar algún trabajo con un número creciente de operaciones del sistema, se irá saturando con tareas y terminará por perder la cohesión. En cambio, en el 2º ejemplo, se delega a la  Venta  la responsabilidad de  crear  el pago. Esto brinda un soporte a una  Alta Cohesión  y a un  Bajo Acoplamiento .   :CAJA P: Pago : Venta 1: crear () 2: agregarPago (p) efectuarPago ()
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) CONTROLADOR: Problema: ¿Quién debería encargarse de atender un evento del sistema?: Un  evento del sistema  es un evento de alto nivel generado por un actor externo (evento de entrada externo). Se asocia a  operaciones del sistema  => respuestas a los  eventos del sistema .  Por ejemplo: cuando un cajero oprime el botón  “Terminar Venta” , está generando un evento sistémico que indica que  “la venta ha terminado” .
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP) Operaciones del sistema  descubiertas durante el análisis de su compor-tamiento Sistema TerminarVenta() IntroducirProducto() EfectuarPago() TPDV ........ TerminarVenta() IntroducirProducto() EfectuarPago() Asignación de las operaciones del sistema  durante su diseño, mediante el patrón Controlador.
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP) En el “ Manejador artificial de Casos de Uso ”, hay un controlador para cada Caso de Uso. No es un objeto del dominio, sino un concepto artificial cuyo fin es dar soporte al sistema (una  fabricación pura ). Por ejemplo, en el Caso de Uso   ComprarProducto  habrá una clase: ManejadordeComprarProducto . Es conveniente elegirlo, cuando un controlador comienza a “saturarse” con demasiadas responsabilidades. Este controlador constituye una buena alternativa cuando hay muchos eventos de sistemas entre varios procesos: asigna su manejo a clases individuales controlables.
DISEÑO DE SISTEMAS Patrones (GRASP) Beneficio Principal: Mayor potencial de los componentes reutilizables . Garantiza que los eventos del sistema sean manejados por la capa de los objetos del dominio y no por la de la interfaz.  Un diseño de interfaz como controlador reduce la posibilidad de reutilización, por estar ligado a una interfaz determinada que rara vez puede reutilizarse en otras aplicaciones.  En cambio, el hecho de delegar en un controlador la responsabilidad de la operación de un sistema, entre las clases del dominio, permite una mejor reutilización de la lógica.
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) ,[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Patrones (GRASP) DOS Advertencias Importantes :   1º) Los controladores de papeles pueden conducir a la obtención de diseños deficientes: Asignar una responsabilidad a un objeto de papeles humano es una forma de imitar lo que ese papel realiza en el mundo real. Ello es aceptable, pero si escoge un controlador de papeles, no caiga en la trampa de diseñar objetos de tipo humano que realicen todo el trabajo, opte más bien por delegar. Por eso, no se aconseja utilizar mucho los controladores de papeles. 2º) La capa de presentación no debiera manejar los eventos del sistema: Los objetos de la interfaz (objetos de ventanas, applets) y la capa de presentación no deberían encargarse de manejar los eventos del sistema. Para ello deben usarse controladores separados.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Modelo TSP
Modelo TSPModelo TSP
Modelo TSP
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionales
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Diagramas de Casos de Uso del Negocio y del Sistema
 Diagramas de Casos de Uso del Negocio y del Sistema Diagramas de Casos de Uso del Negocio y del Sistema
Diagramas de Casos de Uso del Negocio y del Sistema
 
Casos de uso
Casos de usoCasos de uso
Casos de uso
 
Unidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioUnidad 3 Modelo De Negocio
Unidad 3 Modelo De Negocio
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
 
Diagramas de comportamientos
Diagramas de comportamientosDiagramas de comportamientos
Diagramas de comportamientos
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
Metodologia del rup
Metodologia del rupMetodologia del rup
Metodologia del rup
 
Diagramas de clases
Diagramas de clasesDiagramas de clases
Diagramas de clases
 
Principios del RUP
Principios del RUPPrincipios del RUP
Principios del RUP
 
Unidad 9 Patrones De DiseñO
Unidad 9 Patrones De DiseñOUnidad 9 Patrones De DiseñO
Unidad 9 Patrones De DiseñO
 
UML
UMLUML
UML
 
Ejemplo rup
Ejemplo rupEjemplo rup
Ejemplo rup
 
Requerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesRequerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No Funcionales
 
Modelo de entidad relación extendido
Modelo de entidad relación extendidoModelo de entidad relación extendido
Modelo de entidad relación extendido
 
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 

Destacado

"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp..."Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...FAO
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareSoftware Guru
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFjuansoto86
 
Uml y patrones 2da edicion
Uml y patrones  2da edicionUml y patrones  2da edicion
Uml y patrones 2da edicionduncan007
 
2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónicolandeta_p
 
Architecture in agile projects
Architecture in agile projectsArchitecture in agile projects
Architecture in agile projectsLeonardo Rosales
 
Análisis de arquitecturas de software
Análisis de arquitecturas de softwareAnálisis de arquitecturas de software
Análisis de arquitecturas de softwareJorge Rodriguez
 
Patron Memento
Patron MementoPatron Memento
Patron MementoAn3s
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Introducción Ágil a eXtreme Programming
Introducción Ágil a eXtreme ProgrammingIntroducción Ágil a eXtreme Programming
Introducción Ágil a eXtreme ProgrammingChileAgil
 
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS
1.1ARQUITECTURA DE CUATRO MAS UN VISTASadolfo0890
 
El diagrama en la arquitectura.
El diagrama en la arquitectura.El diagrama en la arquitectura.
El diagrama en la arquitectura.Luis Xhaparro
 
Sesion 2 2 conceptos claves de analisis y diseno
Sesion 2 2 conceptos claves de analisis y disenoSesion 2 2 conceptos claves de analisis y diseno
Sesion 2 2 conceptos claves de analisis y disenoJulio Pari
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareLiliana Pacheco
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Marta Silvia Tabares
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para DummiesSorey García
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software designPiyush Gogia
 

Destacado (20)

"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp..."Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
"Mexico - Uso de la tecnología para la captura de datos en el campo y su comp...
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de Software
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoF
 
Uml y patrones 2da edicion
Uml y patrones  2da edicionUml y patrones  2da edicion
Uml y patrones 2da edicion
 
2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico
 
Architecture in agile projects
Architecture in agile projectsArchitecture in agile projects
Architecture in agile projects
 
Análisis de arquitecturas de software
Análisis de arquitecturas de softwareAnálisis de arquitecturas de software
Análisis de arquitecturas de software
 
Patron Memento
Patron MementoPatron Memento
Patron Memento
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Introducción Ágil a eXtreme Programming
Introducción Ágil a eXtreme ProgrammingIntroducción Ágil a eXtreme Programming
Introducción Ágil a eXtreme Programming
 
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
 
El diagrama en la arquitectura.
El diagrama en la arquitectura.El diagrama en la arquitectura.
El diagrama en la arquitectura.
 
Sesion 2 2 conceptos claves de analisis y diseno
Sesion 2 2 conceptos claves de analisis y disenoSesion 2 2 conceptos claves de analisis y diseno
Sesion 2 2 conceptos claves de analisis y diseno
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 
C sharp fundamentos
C sharp fundamentosC sharp fundamentos
C sharp fundamentos
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para Dummies
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software design
 

Similar a Patrones para asignar responsabilidades. grasp

Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Ozzy Bull
 
Del análisis al diseño. conclusión de la fase del análisis. diagramas de cola...
Del análisis al diseño. conclusión de la fase del análisis. diagramas de cola...Del análisis al diseño. conclusión de la fase del análisis. diagramas de cola...
Del análisis al diseño. conclusión de la fase del análisis. diagramas de cola...Juan Pablo Bustos Thames
 
Visibilidad. Paquetes, Estratos y Particiones. Diagramas de Estado y de Activ...
Visibilidad. Paquetes, Estratos y Particiones. Diagramas de Estado y de Activ...Visibilidad. Paquetes, Estratos y Particiones. Diagramas de Estado y de Activ...
Visibilidad. Paquetes, Estratos y Particiones. Diagramas de Estado y de Activ...Juan Pablo Bustos Thames
 
Arquitec a13
Arquitec a13Arquitec a13
Arquitec a13xavazquez
 
Gonzalorojas 12 Uml, Patrones De Diseno
Gonzalorojas 12 Uml, Patrones De DisenoGonzalorojas 12 Uml, Patrones De Diseno
Gonzalorojas 12 Uml, Patrones De DisenoSpimy
 
Aplicaciones n capas en visual.net
Aplicaciones n capas en visual.netAplicaciones n capas en visual.net
Aplicaciones n capas en visual.netLisbeth Ocaña Bueno
 
Conceptos Basicos Uml
Conceptos Basicos UmlConceptos Basicos Uml
Conceptos Basicos Umlfelix17
 
6.modelado de los requerimientos escenarios y clases
6.modelado de los requerimientos  escenarios y clases6.modelado de los requerimientos  escenarios y clases
6.modelado de los requerimientos escenarios y clasesRamiro Estigarribia Canese
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorJomicast
 
Soluciones con objetos y patrones. visibilidad
Soluciones con objetos y patrones. visibilidadSoluciones con objetos y patrones. visibilidad
Soluciones con objetos y patrones. visibilidadJuan Pablo Bustos Thames
 

Similar a Patrones para asignar responsabilidades. grasp (20)

Patrones GRASP de tipo de bajo acoplamiento
Patrones GRASP de  tipo de bajo acoplamientoPatrones GRASP de  tipo de bajo acoplamiento
Patrones GRASP de tipo de bajo acoplamiento
 
Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4
 
Diseño de patrones
Diseño de patronesDiseño de patrones
Diseño de patrones
 
Del análisis al diseño. conclusión de la fase del análisis. diagramas de cola...
Del análisis al diseño. conclusión de la fase del análisis. diagramas de cola...Del análisis al diseño. conclusión de la fase del análisis. diagramas de cola...
Del análisis al diseño. conclusión de la fase del análisis. diagramas de cola...
 
Patrones GRASP
Patrones GRASPPatrones GRASP
Patrones GRASP
 
Patrones GRASP
Patrones GRASPPatrones GRASP
Patrones GRASP
 
Diseño oo
Diseño ooDiseño oo
Diseño oo
 
Visibilidad. Paquetes, Estratos y Particiones. Diagramas de Estado y de Activ...
Visibilidad. Paquetes, Estratos y Particiones. Diagramas de Estado y de Activ...Visibilidad. Paquetes, Estratos y Particiones. Diagramas de Estado y de Activ...
Visibilidad. Paquetes, Estratos y Particiones. Diagramas de Estado y de Activ...
 
Arquitec a13
Arquitec a13Arquitec a13
Arquitec a13
 
Gonzalorojas 12 Uml, Patrones De Diseno
Gonzalorojas 12 Uml, Patrones De DisenoGonzalorojas 12 Uml, Patrones De Diseno
Gonzalorojas 12 Uml, Patrones De Diseno
 
Clase 29
Clase 29Clase 29
Clase 29
 
Aplicaciones n capas en visual.net
Aplicaciones n capas en visual.netAplicaciones n capas en visual.net
Aplicaciones n capas en visual.net
 
Conceptos Basicos Uml
Conceptos Basicos UmlConceptos Basicos Uml
Conceptos Basicos Uml
 
Diseno creacion-bases-datos-completo
Diseno creacion-bases-datos-completoDiseno creacion-bases-datos-completo
Diseno creacion-bases-datos-completo
 
6.modelado de los requerimientos escenarios y clases
6.modelado de los requerimientos  escenarios y clases6.modelado de los requerimientos  escenarios y clases
6.modelado de los requerimientos escenarios y clases
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidor
 
Presentacion gozinto
Presentacion gozintoPresentacion gozinto
Presentacion gozinto
 
Arquitectura integra 2
Arquitectura integra 2Arquitectura integra 2
Arquitectura integra 2
 
Soluciones con objetos y patrones. visibilidad
Soluciones con objetos y patrones. visibilidadSoluciones con objetos y patrones. visibilidad
Soluciones con objetos y patrones. visibilidad
 
APLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NETAPLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NET
 

Más de Juan Pablo Bustos Thames

El Proceso de Diseño de Interfaz del Usuario por Ian Sommerville
El Proceso de Diseño de Interfaz del Usuario por Ian SommervilleEl Proceso de Diseño de Interfaz del Usuario por Ian Sommerville
El Proceso de Diseño de Interfaz del Usuario por Ian SommervilleJuan Pablo Bustos Thames
 
El Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger PressmanEl Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger PressmanJuan Pablo Bustos Thames
 
Descomposición modular y estilos de control
Descomposición modular y estilos de controlDescomposición modular y estilos de control
Descomposición modular y estilos de controlJuan Pablo Bustos Thames
 
Del análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratosDel análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratosJuan Pablo Bustos Thames
 
Primeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoPrimeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoJuan Pablo Bustos Thames
 
Ingeniería del software asistida por computadora (case)
Ingeniería del software asistida por computadora (case)Ingeniería del software asistida por computadora (case)
Ingeniería del software asistida por computadora (case)Juan Pablo Bustos Thames
 

Más de Juan Pablo Bustos Thames (20)

Pruebas del Software
Pruebas del SoftwarePruebas del Software
Pruebas del Software
 
Verificación y Validación del Diseño
Verificación y Validación del DiseñoVerificación y Validación del Diseño
Verificación y Validación del Diseño
 
Diseño a Nivel de Componentes
Diseño a Nivel de ComponentesDiseño a Nivel de Componentes
Diseño a Nivel de Componentes
 
El Proceso de Diseño de Interfaz del Usuario por Ian Sommerville
El Proceso de Diseño de Interfaz del Usuario por Ian SommervilleEl Proceso de Diseño de Interfaz del Usuario por Ian Sommerville
El Proceso de Diseño de Interfaz del Usuario por Ian Sommerville
 
El Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger PressmanEl Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger Pressman
 
Reglas de Oro
Reglas de OroReglas de Oro
Reglas de Oro
 
Diseño de interfaces
Diseño de interfacesDiseño de interfaces
Diseño de interfaces
 
Modelos de dominio específicos
Modelos de dominio específicosModelos de dominio específicos
Modelos de dominio específicos
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Descomposición modular y estilos de control
Descomposición modular y estilos de controlDescomposición modular y estilos de control
Descomposición modular y estilos de control
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Del análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratosDel análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratos
 
Primeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoPrimeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de uso
 
Análisis y diseño orientado a objetos
Análisis y diseño orientado a objetosAnálisis y diseño orientado a objetos
Análisis y diseño orientado a objetos
 
Documentación del diseño
Documentación del diseñoDocumentación del diseño
Documentación del diseño
 
Conceptos de diseño
Conceptos de diseñoConceptos de diseño
Conceptos de diseño
 
Proceso de diseño
Proceso de diseñoProceso de diseño
Proceso de diseño
 
Ingeniería del software asistida por computadora (case)
Ingeniería del software asistida por computadora (case)Ingeniería del software asistida por computadora (case)
Ingeniería del software asistida por computadora (case)
 
Prototipado del software
Prototipado del softwarePrototipado del software
Prototipado del software
 
Prototipado del software
Prototipado del softwarePrototipado del software
Prototipado del software
 

Patrones para asignar responsabilidades. grasp

  • 1. Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
  • 2.
  • 3. PATRONES PARA ASIGNAR RESPONSABILIDADES (GRASP) Craig Larman, Cap. 18 Ingeniería en Sistemas de Información
  • 4. DISEÑO DE SISTEMAS INTRODUCCIÓN Un sistema orientado a objetos se compone de objetos que envían mensajes a otros objetos para que lleven a cabo operaciones. Los contratos incluyen una conjetura inicial óptima sobre las responsabilidades y las postcondiciones de las operaciones. Los diagramas de interacción describen gráficamente la solución – a partir de los objetos en interacción – que estas responsabilidades y postcondiciones satisfacen.
  • 5. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 6. DISEÑO DE SISTEMAS Patrones (GRASP) Casos Reales de Uso Los Casos Reales de Uso presentan un diseño concreto de cómo se realizará el caso. Es una de las primeras actividades en el ciclo de desarrollo. Su creación depende de los casos esenciales generados con anterioridad. Un Caso Real de Uso describe el diseño concreto del caso de uso a partir de una tecnología particular de entrada y salida, y su implementación global. Por ejemplo, si hay una interfaz gráfica para el usuario, el caso de uso real incluirá diagramas de las ventanas en cuestión y una explicación de la interacción.
  • 7. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 8. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 9. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 10.
  • 11. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 12. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 13. DISEÑO DE SISTEMAS Patrones (GRASP) EXPERTO Problema ¿Cuál es el principio fundamental en virtud del cual se asignan las responsabilidades en el Diseño Orientado a Objetos?. Durante el DOO, cuando se definen las interacciones entre los objetos, tomamos decisiones sobre la asignación de responsabilidades a las clases. Si se hacen en forma adecuada, los sistemas tienden a ser más fáciles de entender, mantener y ampliar, y se nos presenta la oportunidad de reutilizar los componentes en futuras aplicaciones. Solución Asignar una responsabilidad al experto en información: la clase que cuenta con la información necesaria para cumplir la responsabilidad.
  • 14. DISEÑO DE SISTEMAS Patrones (GRASP) Ejemplo En un negocio de ventas, se necesita conocer el importe total de una venta. ¿Quién es el responsable de conocer el importe total de la venta?. Desde el punto de vista del patrón Experto, se debe buscar la clase de objeto que posea la información para calcular el total.
  • 15. DISEÑO DE SISTEMAS Diagramas de Colaboración Modelo Conceptual o de Dominio EspProducto descripción precio CUP Venta fecha hora VLP cantidad Contiene V Descriptas_por 1..* 1 1
  • 16.
  • 17. DISEÑO DE SISTEMAS Diagramas de Colaboración Calculo del Total de la Venta 2.1 : p := precio () 2 : st := subtotal() t:= total()  EspProducto Desc Precio CUP Precio() :Venta Vli:=:VLP :EspProducto :VLP 1 *:[p/c] vli:= siguiente()  Venta fecha hora Total() VLP cantidad Subtotal()
  • 18. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 19.
  • 20.
  • 21. DISEÑO DE SISTEMAS Patrones (GRASP) CREADOR Problema ¿Quién es responsable de crear una nueva instancia de alguna clase?. Solución Asignarle a la clase B la responsabilidad de crear una instancia de clase A en uno de los siguientes casos: B “agrega” los objetos A. B “contiene” los objetos A. B “registra” las instancias de los objetos de A. B “utiliza” específicamente los objetos A. B “tiene los datos de inicialización” que serán transmitidos a A, cuando este objeto sea creado (así que B es un Experto respecto de A). B es un creador de los objetos de A. Si existe mas de una opción, prefiera la clase B que “agregue o contenga” la clase A.
  • 22.
  • 23. DISEÑO DE SISTEMAS Patrones (GRASP) En este Modelo Conceptual una Venta contiene muchos objetos VLP; por ello el patrón Creador sugiere que Venta es idónea para asumir la responsabilidad de crear la instancia VLP, y a partir de aquí podemos diseñar las interacciones de los objetos en un diagrama de colaboración.
  • 24. DISEÑO DE SISTEMAS Patrones (GRASP) Creación de un objeto VentaLineadeProducto: Al asignar responsabilidades en un diagrama de colaboración => definimos en Venta un Método de “hacerlíneadeProducto” . 1: crear(cantidad) hacerLineadeProducto(cantidad)  :Venta : VentaLinea deProducto Venta fecha hora hacerLinea deProducto() total() Nuevo método
  • 25.
  • 26.
  • 27. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 28. DISEÑO DE SISTEMAS Patrones (GRASP) Solución alternativa: En ambos casos suponemos que Venta terminará acoplándose al conocimiento de un Pago. El diseño 2 es preferible porque se conserva un menor acoplamiento global. :CAJA P: Pago : Venta 1: crear () 2: agregarPago (p) efectuarPago () :CAJA : Venta : Pago 1: efectuarPago () efectuarPago () 1.1: crear () V
  • 29.
  • 30.
  • 31. DISEÑO DE SISTEMAS Patrones (GRASP) ALTA COHESIÓN Problema ¿Cómo mantener la complejidad dentro de límites manejables?: En el DOO, la cohesión es una medida de cuán relacionados y enfocados están las responsabilidades de una clase. Una alta cohesión caracteriza a las clases con responsabilidades estrechamente relacionadas para que no realicen un trabajo enorme. A menudo representan un alto grado de abstracción o han asumido responsabilidades que deberían haber delegado. Una clase con baja cohesión hace muchas cosas no afines o un trabajo excesivo.
  • 32.
  • 33. DISEÑO DE SISTEMAS Patrones (GRASP) Esta asignación de responsabilidad coloca en la clase CAJA la generación del pago. (patrón Creador ). Esto es aceptable. Pero si seguimos haciendo que la clase CAJA se encargue de efectuar algún trabajo con un número creciente de operaciones del sistema, se irá saturando con tareas y terminará por perder la cohesión. En cambio, en el 2º ejemplo, se delega a la Venta la responsabilidad de crear el pago. Esto brinda un soporte a una Alta Cohesión y a un Bajo Acoplamiento . :CAJA P: Pago : Venta 1: crear () 2: agregarPago (p) efectuarPago ()
  • 34. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 35.
  • 36. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 37.
  • 38. DISEÑO DE SISTEMAS Patrones (GRASP) CONTROLADOR: Problema: ¿Quién debería encargarse de atender un evento del sistema?: Un evento del sistema es un evento de alto nivel generado por un actor externo (evento de entrada externo). Se asocia a operaciones del sistema => respuestas a los eventos del sistema . Por ejemplo: cuando un cajero oprime el botón “Terminar Venta” , está generando un evento sistémico que indica que “la venta ha terminado” .
  • 39.
  • 40. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 41. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 42. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 43. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 44. DISEÑO DE SISTEMAS Patrones (GRASP) Operaciones del sistema descubiertas durante el análisis de su compor-tamiento Sistema TerminarVenta() IntroducirProducto() EfectuarPago() TPDV ........ TerminarVenta() IntroducirProducto() EfectuarPago() Asignación de las operaciones del sistema durante su diseño, mediante el patrón Controlador.
  • 45. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 46. DISEÑO DE SISTEMAS Patrones (GRASP) En el “ Manejador artificial de Casos de Uso ”, hay un controlador para cada Caso de Uso. No es un objeto del dominio, sino un concepto artificial cuyo fin es dar soporte al sistema (una fabricación pura ). Por ejemplo, en el Caso de Uso ComprarProducto habrá una clase: ManejadordeComprarProducto . Es conveniente elegirlo, cuando un controlador comienza a “saturarse” con demasiadas responsabilidades. Este controlador constituye una buena alternativa cuando hay muchos eventos de sistemas entre varios procesos: asigna su manejo a clases individuales controlables.
  • 47. DISEÑO DE SISTEMAS Patrones (GRASP) Beneficio Principal: Mayor potencial de los componentes reutilizables . Garantiza que los eventos del sistema sean manejados por la capa de los objetos del dominio y no por la de la interfaz. Un diseño de interfaz como controlador reduce la posibilidad de reutilización, por estar ligado a una interfaz determinada que rara vez puede reutilizarse en otras aplicaciones. En cambio, el hecho de delegar en un controlador la responsabilidad de la operación de un sistema, entre las clases del dominio, permite una mejor reutilización de la lógica.
  • 48.
  • 49.
  • 50. DISEÑO DE SISTEMAS Patrones (GRASP) DOS Advertencias Importantes : 1º) Los controladores de papeles pueden conducir a la obtención de diseños deficientes: Asignar una responsabilidad a un objeto de papeles humano es una forma de imitar lo que ese papel realiza en el mundo real. Ello es aceptable, pero si escoge un controlador de papeles, no caiga en la trampa de diseñar objetos de tipo humano que realicen todo el trabajo, opte más bien por delegar. Por eso, no se aconseja utilizar mucho los controladores de papeles. 2º) La capa de presentación no debiera manejar los eventos del sistema: Los objetos de la interfaz (objetos de ventanas, applets) y la capa de presentación no deberían encargarse de manejar los eventos del sistema. Para ello deben usarse controladores separados.