viernes, 8 de agosto de 2008

oo: Patrones

Que es un Patron?

Es conocida la existencia de los llamados "Patrones" por la gran mayoria de los involucrados en el desarrollo de software. Quien paso por alguna facultad, tuvo la necesidad de consultar el famoso libro "Design Patterns: Elements of Reusable Object-Oriented Software" de "The Gang of Four" (GoF) o escucho sobre POSA.

La definicion mas conocida de Patron dice que es aquella solucion establecida para un problema recurrente en un cierto contexto.

En el primer volumen de POSA, el conocido libro "Pattern-Oriented Software Architecture: A System of Patterns", incluye una definicion mas completa, que surge a partir de la definicion del termino "Patron" dada por Christopher Alexander:
"Cada patron es una regla de tres partes, la cual expresa una relacion entre un cierto contexto, un problema y una solucion.
Como elemento del mundo, cada patron es una relacion entre un cierto contexto, un cierto sistema de fuerzas que ocurren repetidamente en ese contexto, y una cierta configuracion espacial que permite que esas fuerzas se resuelvan entre si.
Como elemento del lenguage, un patron es una instruccion, la cual muestra como esta configuracion espacial puede ser usada, una y otra vez, para resolver un sistema de fuerzas, donde sea que el contexto lo permite.
Un patron es, en resumen, al mismo tiempo una cosa, la cual ocurre en el mundo, y una regla nos dice como recrear esa cosa, y cuando debemos crearla. Es a la vez, un proceso y una cosa: ambas una descripcion de algo vivo, y una descripcion del proceso que lo genera.
"
Ahora la definicion de Patron segun POSA:
"Un patron de software describe un problema de diseno recurrente que ocurre en contexto de diseno especificos, y presenta un esquema generico bien establecido para solucionarlo. El esquema de solucion se especifica mediante la descripcion de sus componentes constitutivos, sus responsabilidades y relaciones, y las formas en las cuales colaboran."
Se parece mucho a lo que ya conocemos, verdad?

Como se define un Patron?

Un Patron queda definido por un esquema compuesto por tres partes:
  • Contexto: es aquella situacion que lleva a un problema
    Debe describir todas aquellas situaciones en las cuales ocurre el problema. Esto resulta imposible, por lo que se espera que se una descripcion tan generica como sea posible o la enumeracion de las situaciones en las cuales el problema ocurre.

  • Problema: es aquel problema recurrente que ocurre en el contexto dado
  • Solucion: es la forma establecida que resuelve el problema
Categorias

Existen diversos tipos de patrones. Es posible agruparlos mediante las siguientes categorias:
  • Patrones de arquitectura
    • Estructura
    • Sistemas Distribuidos
    • Sistemas Interactivos
    • Sistemas Adaptables
  • Patrones de diseno
    • de Creacion
    • de Estructura
    • de Comportamiento
Patrones de Arquitectura

Los patrones de arquitectura mas conocidos son los presentados en POSA 1:
  • Estructura
    • Layers
    • Pipes and Filters
    • Blackboard
  • Sistemas Distribuidos
    • Broker
  • Sistemas Interactivos
    • Model-View-Controller
    • Presentation-Abstraction-Control
  • Sistemas Adaptables
    • Microkernel
    • Reflection
Patrones de diseno

Los patrones de diseno mas importantes son los presentados por GoF (aunque existen otros muy utiles presentados por Java EE y Martin Fowler):
  • Creacion
  • Estructura
  • Comportamiento
Vinculos:

No hay comentarios.: