18
1 Introducción a los patrones de Software Dpto. de Ingeniería de Sistemas y Computación Universidad de los Andes Material de base: Gloria Cortés y Rubby Casallas Referencias LARMAN, Craig. Applying UML and Patterns. Prentice Hall. 1998. Patrones GRASP, Cap. 18

Introducción a los patrones de Software - Icesi

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

1

Introducción a los

patrones de SoftwareDpto. de Ingeniería de Sistemas y ComputaciónUniversidad de los AndesMaterial de base: Gloria Cortés y Rubby Casallas

Referencias

LARMAN, Craig. Applying UML andPatterns. Prentice Hall. 1998.Patrones GRASP, Cap. 18

2

Agenda Introducción a los Patrones Patrones GRASP

Introducción a los Patrones Qué es un Patrón?

“Es una solución reutilizable de problemas recurrentes que ocurren durante el desarrollo del software”

Ayudan a entender las soluciones del problema con un vocabulario igual lo que permite un mejor entendimiento

Existen diferentes tipos de patrones

3

Introducción a los Patrones Características

Tiene un nombreTiene un contexto o problema a resolverTiene una soluciónTiene unas consecuencias al utilizarlo

Tipos de Patrones Arquitecturales - Buschmann

Subdivisión de Sistemas (3) Layers, Pipes and Filter, Blackboard

Sistemas Distribuidos (1) Broker

Sistemas Interactivos (2) Model View Controller, Presentation

Abstraction Control

Sistemas Adaptables (2) Microkernel, Reflection

4

Tipos de Patrones Generales – Grand

Delegación, Interface, Immutable, MarkerInterface, Proxy

Estructurales – Gamma y GrandAdapter, Iterator, Bridge, Facade,

Flyweight, Virtual Proxy etc Creación – Gamma y Grand

Factory Method, Abstract Factory, Builder, Prototype, Singleton, Object Pool, etc.

Tipos de Patrones Particionamiento – Gamma y Grand

Layered Initialization, Filter, Composite

Comportamiento – Gamma y Grand Command, Mediator, Observer, State, Strategy,

Visitor.

Concurrencia - Grand Single Thread Execution, Guarded Suspension,

Balking, Read/Write Lock, Produce-Consumer

Asignación de Responsabilidades – Larman GRASP

5

Patrones General Buschmann 17 patrones Gamma 23 patrones Grand 41 patrones Larman 10 patrones

Patrones GRASP General Responsability Assignment

Software Patterns Asignación de Responsabilidades

ExpertCreatorLow CouplingHigh CohesionController

6

Patrones GRASP Motivación

La asignación de responsabilidades es la habilidad más importante en el análisis y diseño orientado por objetos

Respetar los principios fundamentales es uno de los factores críticos, para obtener diseños reutilizables, mantenibles y extendibles.

GRASP: descripción de los principios fundamentales de la asignación de responsabilidades expresados como patrones

Patrones GRASP En que consiste la responsabilidad?

Obligaciones o contratos de una clase Dos clases de responsabilidades

Conocer Conocer la información privada del objeto Conocer acerca de los objetos relacionados Conocer acerca de lo que se puede calcular o

derivar

7

Patrones GRASP Hacer

Realizar algo él mismo Iniciar acciones en otros objetosControlar o coordinar actividades en otros

objetos.

Patrones GRASP Cuando se asignan resposabilidades?

En la fase de análisis? Definición de los servicios de los componentes

de la arquitectura global Responsabilidades de hacer

Definición de los atributos de las clases del modelo conceptual del mundo.

Definición de los diagramas de interacción, para refinar el modelo conceptual del mundo.

8

Patrones GRASP Cuando se asignan resposabilidades?

En la fase de diseño: Diseño estructural, refinamiento del modelo

conceptual del mundo Responsabilidades de conocer

Definición de métodos

Patrones GRASP Quién tiene la responsabilidad de:

atender un evento del sistema?crear un objeto? realizar una operación (distinta de crear o

responder un evento)? Cómo utilizar los patrones de

evaluación: alta cohesión vs. bajo acoplamiento?

9

Expert pattern Cada objeto es responsable por mantener su

propia información (principio de encapsulamiento): conoce y puede informar el valor de sus atributos puede modificar el valor de sus atributos

Si tiene relaciones de agregación (fuerte) con otros objetos (sus partes), también seráresponsable de conocer la información de ellos, de crearlos (Creator pattern) y de delegarles las operaciones.

Creator Pattern El objeto B tiene la responsabilidad de

crear objetos de la clase A si:B agrega objetos AB contiene objetos AB registra objetos AB usa (exhaustivamente) objetos AB posee la información necesaria para

inicializar A

10

Low coupling pattern Acoplamiento es la medida de cuánto una

clase esta conectada (tiene conocimiento) de otras clases.

Es un patrón evaluativo: un bajo acoplamiento permite que el diseño de clases sea más independiente. Reduce el impacto de los cambios y aumenta la reutilización.

No puede ser considerado aisladamente. Puede no ser importante si la reutilización no es un objetivo.

High cohesion pattern Cohesión funcional dentro de una clase

es una medida que indica cuán relacionadas están las responsabilidades de una clase.

Es un patrón evaluativo: entre más alta cohesión mas fácil de entender, de cambiar, de reutilizar.

No puede ser considerado aisladamente.

11

12

13

14

15

Controller pattern (1) Asignar la responsabilidad de manejar

los mensajes eventos del sistema a una clase que representa una de las siguientes elecciones:el sistema total la organizaciónalgo en le mundo real que está activo - por

ejemplo el rol de una personauna manija artificial de los eventos del

sistema relacionados con un caso de uso

16

Controller pattern (2) Un controller o varios?

Usar los patrones de evaluación (cohesión/acoplamiento) para decidir. En particular, si hay muchos eventos, un solo objeto puede volverse poco cohesivo !

Si es necesario guardar o asegurar una secuencia de eventos es mejor un controller por caso de uso.

Controller pattern (3) Un controller despacha operaciones. Al

principio del análisis existirá una clase:

Un controller NO es un objeto de la interfaz !!

System

servicio1()

serviciok()

17

Decisiones de diseño GRASP

Refinamiento estructural Se modifica y completa el diagrama de clases

del mundo

Actividades de diseño Verificación de requerimientos contra el

diagrama de clasesSe realiza haciendo los diagramas de

interacción para cada uno de los requerimientos

Utilizar los patrones GRASP para justificar las decisiones que se tomen

Documentar las decisiones tomadas y completar la información del diseño

18

Actividades de diseño Tipos de decisiones a tomar

Agregar/eliminar clases, atributos, métodos o asociaciones

Asignar cardinalidad a las asociaciones Asignar roles a las asociaciones Completar información de los atributos ( decidir

tipo, representación y restricciones ) Completar información de los métodos (

parámetros, resultados, contrato) Evaluación de opciones atributo o asociación?