domingo, 23 de agosto de 2015

GRASP

Hoy quiero compartir con ustedes los patrones GRASP ya que para alguno de nosotros hace algún tiempo lo vimos en el pregrado y que por extrañas razones lo hemos olvidado, esta será una definición general para tener en cuenta en el desarrollo de nuestra especialización y especialmente en la catedra Modelado y Gestion de la Información.

Definicion:
General Responsibility Assignment Software Patterns (Patrones Generales de Software para Asignación de Responsabilidades).

Más que patrones  generales de software se puede resumir que es una serie de buenas prácticas para el diseño de software.

Existen dos tipos 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

Hacer.
Realizar algo él mismo, ejecutar un cálculo, crear un objeto, iniciar acciones en otros objetos, controlar o coordinar actividades en otros objetos

Patrones:

Patrón Experto.

Problema: 
Cuál es el principio fundamental en virtud del cual se asignan las responsabilidades en el diseño orientado a objetos?

Solución:
Asignar la responsabilidad al experto en la información, la clase que tiene la información necesaria para satisfacer la responsabilidad.

      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


Patrón Creador.

Problema: Quién es el responsable de crear una nueva instancia de una clase?
Solución: El objeto B tiene la responsabilidad de crear objetos de la Clase A si:
·         B agrega objetos A
·         B contiene objetos A
·         B registra objetos A
·         B usa exhaustivamente objetos A
·         B posee la información necesaria para inicializar a A


Patrón Bajo Acoplamiento

Acoplamiento es la medida de cuanto una clase está conectada (tiene conocimiento) a otras clases

Problema:
Cómo podemos soportar baja dependencia a través de las clases, bajo impacto de cambios, e incremento en la reutilización de clases?

Solución: 
asignar responsabilidades para que el acoplamiento permanezca bajo


Patrón Alta Cohesión.

Cohesión funcional dentro de una clase es una medida que indica cuan relacionadas están las responsabilidades de una clase

Problema: 
Cómo se puede guardar la complejidad manejable?

Solución:
Asigne responsabilidades para que la cohesión permanezca alta

  • ·         Es un patrón evaluativo: entre más alta cohesión más fácil de entender, de cambiar, de reutilizar
  • ·         No puede ser considerado aisladamente


Patrón Controlador
  • ·         Un evento de entrada al sistema es algún evento desde algún actor externo (humano ó no)
  • ·         El objeto controlador es responsable de decidir que hacer con el evento
  • ·         El controlador se aplica para el manejo de interfaces externas y al manejo de entradas desde interfaces de usuario
  • ·         Los controladores de interface de usuario generalmente tienen la forma: Coordinador, Manejador, Session.


Referencias:

Larman C., “UML y Patrones”, Prentice Hall, Segunda Edición, 2003

Departamento de Ingeniería de Sistemas y Computación, Universidad de los Andes, https://sistemasacademico.uniandes.edu.co/~isis2603/dokuwiki/lib/exe/fetch.php?media=principal:1._grasp-parte1y2.pdf

No hay comentarios:

Publicar un comentario