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

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

Embed Size (px)

Citation preview

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