jueves, 31 de marzo de 2016

Patrón de diseño

Que es un patrón de diseño:
Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

Que es un patrón de arquitectura:
Los patrones arquitectónicos, o patrones de arquitectura, también llamados arquetipos ofrecen soluciones a problemas de arquitectura de software en ingeniería de software. Dan una descripción de los elementos y el tipo de relación que tienen junto con un conjunto de restricciones sobre cómo pueden ser usados. Un patrón arquitectónico expresa un esquema de organización estructural esencial para un sistema de software, que consta de subsistemas, sus responsabilidades e interrelaciones. En comparación con los patrones de diseño, los patrones arquitectónicos tienen un nivel de abstracción mayor.


Objetivos de los patrones

Los patrones de diseño pretenden:
  • Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
  • Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
  • Formalizar un vocabulario común entre diseñadores.
  • Estandarizar el modo en que se realiza el diseño.
  • Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.
Asimismo, no pretenden:

  • Imponer ciertas alternativas de diseño frente a otras.
  • Eliminar la creatividad inherente al proceso de diseño. 

Categorías de patrones

Según la escala o nivel de abstracción:
  • Patrones de arquitectura: Aquellos que expresan un esquema organizativo estructural fundamental para sistemas de software.
  • Patrones de diseño: Aquellos que expresan esquemas para definir estructuras de diseño (o sus relaciones) con las que construir sistemas de software.
  • Dialectos: Patrones de bajo nivel específicos para un lenguaje de programación o entorno concreto.

Estructuras o plantillas de patrones. Para describir un patrón se usan plantillas más o menos estandarizadas, de forma que se expresen uniformemente y puedan constituir efectivamente un medio de comunicación uniforme entre diseñadores. Varios autores eminentes en esta área han propuesto plantillas ligeramente distintas, si bien la mayoría definen los mismos conceptos básicos. 


La plantilla más común es la utilizada precisamente por el GoF y consta de los siguientes apartados:
  • Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés).
  • Clasificación del patrón: creacional, estructural o de comportamiento.
  • Intención: ¿Qué problema pretende resolver el patrón?
  • También conocido como: Otros nombres de uso común para el patrón.
  • Motivación: Escenario de ejemplo para la aplicación del patrón.
  • Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.
  • Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.

Existen cuatro tipos de patrones:
  • Patrones creacionales
  • Patrones estructurales
  • Patrones de comportamiento
  • Patrones de arquitectura

Dominios en el diseño de Patrones

Control de acceso. Hay muchas situaciones en las cuales el acceso a datos, características y funcionalidad son limitadas a la definición de los usuarios.

Concurrencia. Muchas aplicaciones deben manejar múltiples tareas de forma que simule el paralelismo. Hay muchas formas de manejar esta concurrencia y cada una puede ser presentada por un patrón arquitectónico diferente.
Distribución. El problema de distribución dirige el problema de forma en que los sistemas o componentes se comunican con otros en un entorno distribuido.
Persistencia. Los datos persistentes son almacenados en bases de datos o archivos y pueden ser leídos o modificados por otros procesos más adelante.


PATRONES DE ARQUITECTURA VS. PATRONES DE DISEÑO

Si queremos creer que realmente existe diferencia, entonces es fácil verla midiendo el impacto al aplicar el patrón: si este es relevante a la totalidad del sistema entonces hablamos de un patrón de arquitectura; en cambio, si este sólo concierne a un subcomponente, nos referimos a un patrón de diseño.
Tomen como caso el patrón de Layers , este es claramente un patrón arquitectónico, ya que concierne al diseño general de la aplicación. Mientras que el patrón Active Record , que lidia con los mecanismos de persistencia de datos es un patrón de diseño.
Pero, qué pasa cuando lo que era totalidad se vuelve un subcomponente?. Cambiarían entonces sus patrones de arquitectura a diseño?. Aquí es donde no es tan fácil la respuesta.

Hay otros patrones que solapan responsabilidades de todo-parte, por ejemplo el MVC . Según como se aplique puede ser un patrón de diseño o arquitectura.



Regresar a la pagina principal


7 comentarios: