Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño /...

39
Patrones GRASP Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software base: Arquitectura de Software Julio Carreño / César Bustacara Julio Carreño / César Bustacara

Transcript of Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño /...

Page 1: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Patrones GRASPPatrones GRASP

ANALISIS Y DISEÑO O.O. (LCD 2006-1)ANALISIS Y DISEÑO O.O. (LCD 2006-1)

base: Arquitectura de Softwarebase: Arquitectura de SoftwareJulio Carreño / César BustacaraJulio Carreño / César Bustacara

Page 2: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Patrones GRASPPatrones GRASP

Page 3: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

General Responsabilities General Responsabilities Assignment Software Patterns Assignment Software Patterns

Page 4: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

PATRONESPATRONES

Solución a Problemas recurrentesSolución a Problemas recurrentes Capturar las Mejores Prácticas de DiseñoCapturar las Mejores Prácticas de Diseño NO son siempre la mejor soluciónNO son siempre la mejor solución Facilitan la comunicaciónFacilitan la comunicación BENEFICIOSBENEFICIOS

MantenibilidadMantenibilidad ExtensibilidadExtensibilidad ReestructuraciónReestructuración PortabilidadPortabilidad

Page 5: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

CONOCERCONOCER

Información privadaInformación privada Objetos relacionadosObjetos relacionados Lo que puede Lo que puede

derivar/calcularderivar/calcular Ej: Métodos analizadores Ej: Métodos analizadores

"get""get"

Page 6: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

HACERHACER

Algo él mismoAlgo él mismo Ejecutar un cálculoEjecutar un cálculo Crear un objetoCrear un objeto Iniciar acciones en otros Iniciar acciones en otros

ObjetosObjetos Controlar/Coordinar Controlar/Coordinar

actividades en otros Objetosactividades en otros Objetos Ej: Métodos modificadores Ej: Métodos modificadores

"set""set"

Page 7: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

ExpertoExperto

Page 8: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

BENEFICIOBENEFICIO

Conserva el Conserva el EncapsulamientoEncapsulamiento

Bajo AcoplamientoBajo Acoplamiento Alta CohesiónAlta Cohesión

Page 9: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

EjemploEjemplo

Asociaciones de VentaAsociaciones de Venta Calculo Total de la VentaCalculo Total de la Venta Métodos a implementarMétodos a implementar

Page 10: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: ExpertoEjemplo: Experto

Asociaciones de VentaAsociaciones de Venta

Page 11: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: ExpertoEjemplo: Experto

Calculo Total de la VentaCalculo Total de la Venta

Page 12: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: ExpertoEjemplo: Experto

Métodos a implementarMétodos a implementar

Page 13: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

CreadorCreador

Page 14: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

El Objeto B tiene la El Objeto B tiene la responsabilidad de tener un responsabilidad de tener un método para creación de objetos A método para creación de objetos A si...si...

B agrega objetos AB agrega objetos A B contiene objetos AB contiene objetos A B registra objetos AB registra objetos A B usa exhaustivamente B usa exhaustivamente

objetos Aobjetos A B posee info para iniciar AB posee info para iniciar A

Page 15: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

BENEFICIOBENEFICIO

Bajo AcoplamientoBajo Acoplamiento

Page 16: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: CreadorEjemplo: Creador

Agregar Items de VentaAgregar Items de Venta

Page 17: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Bajo AcoplamientoBajo Acoplamiento

Page 18: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

¿Cómo soportar bajo grado ¿Cómo soportar bajo grado de dependencia entre clases?de dependencia entre clases?

Modelo DESCENTRALIZADO Modelo DESCENTRALIZADO (ver dos objetos a lo mas!)(ver dos objetos a lo mas!)

Para clases que cambian Para clases que cambian constantemente...constantemente...

Para reutilización!Para reutilización!

Page 19: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

BENEFICIOBENEFICIO

No se afectan por cambios No se afectan por cambios en otros componentesen otros componentes

Fáciles de entender por Fáciles de entender por separadoseparado

Fáciles de reutilizarFáciles de reutilizar

Page 20: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento

Diseño DescentralizadoDiseño Descentralizado Diseño CentralizadoDiseño Centralizado Propuesta Solución UNOPropuesta Solución UNO Propuesta Solución DOSPropuesta Solución DOS

Page 21: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento

Diseño DescentralizadoDiseño Descentralizado

Page 22: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento

Diseño CentralizadoDiseño Centralizado

Page 23: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento

Propuesta Solución UNOPropuesta Solución UNO

Page 24: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento

Propuesta Solución DOSPropuesta Solución DOS

Page 25: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Alta CohesiónAlta Cohesión

Page 26: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

BENEFICIOBENEFICIO

Mejoran la claridad del Mejoran la claridad del DiseñoDiseño

Simplificación del cambioSimplificación del cambio Genera bajo acoplamientoGenera bajo acoplamiento Facilita la reutilizaciónFacilita la reutilización

Page 27: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

EjemploEjemplo

Alta CohesiónAlta Cohesión Baja CohesiónBaja Cohesión

Page 28: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: Alta CohesiónEjemplo: Alta Cohesión

Alta CohesiónAlta Cohesión

Page 29: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: Alta CohesiónEjemplo: Alta Cohesión

Baja CohesiónBaja Cohesión

Page 30: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

ControladorControlador

Page 31: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Un coordinador... (por caso de Un coordinador... (por caso de uno!)uno!)

Que representa el sistema: Que representa el sistema: FACHADA!FACHADA!

Que representa un rol Que representa un rol activo: TAREAS!activo: TAREAS!

Un manejador artificial: Un manejador artificial: SESSION!SESSION!

Page 32: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

BENEFICIOBENEFICIO

Mayor potencial de los Mayor potencial de los Componentes reutilizablesComponentes reutilizables

Page 33: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

EjemploEjemplo

Opciones de ControladorOpciones de Controlador Solución DeseableSolución Deseable No muy buena SoluciónNo muy buena Solución

Page 34: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: ControladorEjemplo: Controlador

Opciones de ControladorOpciones de Controlador

Page 35: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: ControladorEjemplo: Controlador

Solución DeseableSolución Deseable

Page 36: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Ejemplo: ControladorEjemplo: Controlador

No muy buena SoluciónNo muy buena Solución

Page 37: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

FachadaFachada

Page 38: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

EjemploEjemplo

FachadaFachada

Page 39: Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara.

Patrones GRASPPatrones GRASP