Los
patrones son una disciplina de resolución de problemas en la
ingeniería del software que ha surgido con mayor énfasis en la
comunidad de orientación a objetos, aunque pueden ser aplicados en
cualquier ámbito de la informática y las ciencias en general.
El
arquitecto Christopher Alexander define el término patrón de la
siguiente manera:
“Cada
patrón es una regla de 3 partes, que expresa una relación entre un
contexto, un problema y una solución. Como un elemento en el mundo,
cada patrón es una relación entre un contexto, un sistema de
fuerzas que ocurren repetidamente en ese contexto y una configuración
espacial que permite que esas fuerzas se resuelvan entre sí.
Como
elemento de un lenguaje, un patrón es una instrucción que muestra
como puede ser usada esta configuración espacial una y otra vez para
resolver el sistema de fuerzas, siempre que el contexto lo haga
relevante.”
Los
patrones ayudan a construir sobre la experiencia colectiva de
ingenieros de software experimentados. Estos capturan la experiencia
existente y que ha demostrado ser exitosa en el desarrollo de
software, y ayudan a promover las buenas prácticas de diseño. Cada
patrón aborda un problema específico y recurrente en el diseño o
implementación de un software.
Aunque
el arquitecto Christopher Alexander hacía referencia a patrones de
edificios y urbanos, lo que él proponía se puede aplicar de igual
forma a patrones de software, donde las soluciones se plantean en
términos de componentes, interfaces y relaciones en lugar de paredes
y puertas.
Años
más tarde, las ideas llegaron por fin a la informática. Si bien el
concepto de arquitectura implícita en el trabajo actual con
patrones, está más cerca de la implementación, la reutilización
de patrones guarda estrecha relación con la tradición del diseño
concreto orientado a objetos.
Considerando
algunos de los patrones existentes se observa que ellos pueden cubrir
varios rangos de escala y abstracción:
-Estructurar
un sistema de software dentro de subsistemas.
-Soportar
el refinamiento de subsistemas y componentes o la relación entre
ellos.
-Ayudar
a implementar aspectos particulares de diseño en un lenguaje de
programación específico.
Para
refinar dicha escala podemos agrupar los patrones que representan un
rango similar de abstracción en tres categorías:
-Patrones
Arquitectónicos
-Patrones
de Diseño
-Idioms
Patrones
Arquitectónicos
Los
patrones arquitectónicos son plantillas que describen los principios
estructurales globales que construyen las distintas Arquitecturas de
Software viables.
Plantean
una organización estructural fundamental para un sistema de
software, expresando un conjunto de subsistemas predefinidos,
especificando responsabilidades y organizando las relaciones entre
ellos.
La
selección de un patrón arquitectónico es además una decisión
fundamental de diseño cuando se desarrolla un sistema de software.
Patrones
de Diseño
Un
patrón de diseño provee un esquema para refinar componentes de un
sistema de software y la forma en que se relacionan entre sí.
Describe una estructura generalmente recurrente de comunicación de
componentes que resuelve un problema de diseño general dentro de un
contexto particular.
Los
patrones de diseño son patrones de granularidad media, ya que tienen
menor nivel de abstracción que los patrones arquitectónicos pero
tienden a ser independientes de un lenguaje de programación en
particular o de un paradigma de programación.
La
aplicación de un patrón de diseño no tiene un efecto fundamental
en la estructura del sistema de software global, pero tiene gran
ingerencia sobre la arquitectura de un subsistema.
Idioms
Los
Idioms están relacionados con la implementación de diseño de
problemas particulares. Un Idiom es un patrón de bajo nivel
específico para un lenguaje de programación. Describe como
implementar aspectos particulares de componentes o las relaciones
entre ellos usando las características dadas por el lenguaje.
Los
Idioms representan el nivel más bajo de patrones y direccionan tanto
aspectos de diseño como de implementación.
No hay comentarios:
Publicar un comentario