Patrones de Arquitectura
abr
11
Patrones 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.
Un patrón es una solución a un problema de diseño. 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 reusable, lo que significa que es aplicable a diferentes problemas de diseño en circunstancias parecidas.
Estableciendo patrones de diseño, se hace más fácil construir soluciones específicas que tienen determinadas estructuras o piezas en común, reutilizando al mismo tiempo experiencias adquiridas.
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.
No es obligatorio utilizar los patrones, solo es aconsejable en el caso de tener el mismo problema o similar que soluciona el patrón, siempre teniendo en cuenta que en un caso particular puede no ser aplicable. "Abusar o forzar el uso de los patrones puede ser un error".
Categorías generales de patrones
Según la escala o nivel de abstracción:
- Patrones de arquitectura: Aquéllos que expresan un esquema organizativo estructural fundamental para sistemas de software.
- Patrones de diseño: Aquéllos 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.
Antipatrón de diseño
Además, también es importante reseñar el concepto de "antipatrón de diseño", que con forma semejante a la de un patrón, intenta prevenir contra errores comunes de diseño en el software.
La idea de los antipatrones es dar a conocer los problemas que acarrean ciertos diseños muy frecuentes, para intentar evitar que diferentes sistemas acaben una y otra vez en el mismo callejón sin salida por haber cometido los mismos errores.
Patrones de arquitectura
Los patrones de arquitectura están orientados a representar los diferentes elementos que componen una solución de software y las relaciones entre ellos. A diferencia de los patrones de diseño de software que están orientados a objetos y clases (patrones creacionales, estructurales, de comportamiento, de interacción, etc.), los patrones de arquitectura están a un mayor nivel de abstracción.
Los patrones de arquitectura forman parte de la llamada Arquitectura de Software (arquitectura lógica de un sistema), que de forma resumida comprende:
- El diseño de más alto nivel de la estructura del sistema
- Los patrones y abstracciones necesarios para guiar la construcción del software de un sistema
- Los fundamentos para que analistas, diseñadores, programadores, beta testers, etc. trabajen en una línea común que permita cubrir restricciones y alcanzar los objetivos del sistema
- Los objetivos del sistema, no solamente funcionales, sino de mantenimiento, auditoría, flexibilidad e interacción con otros sistemas
- Las restricciones que limitan la construcción del sistema acorde a las tecnologías disponibles para su implementación
La arquitectura de software define, de manera abstracta, los componentes que llevan a cabo alguna tarea de proceso de información, sus interfaces y la comunicación entre ellos. Toda arquitectura debe ser implementable en una arquitectura física, que consiste simplemente en determinar qué ordenador tendrá asignada cada tarea.
Existen al menos tres vistas absolutamente fundamentales en cualquier arquitectura:
- La visión estática: describe qué componentes tiene la arquitectura
- La visión funcional: describe qué hace cada componente
- La visión dinámica: describe cómo se comportan los componentes a lo largo del tiempo y como interactúan entre sí
El patrón de arquitectura debe contener de alguna manera, información para que estas tres vistas fundamentales estén presentes y puedan servir para la implementación de soluciones basadas en él.
Descripción de un patrón
Los siguientes tópicos describen las secciones de un patrón de arquitectura.
Sección
|
Descripción
|
Nombre
|
Nombre descriptivo que identifica al patrón
|
Clasificación
|
Clasificación del patrón que permita focalizar su orientación a la solución de una determinada área de problemas
|
Intención
|
Breve descripción del objetivo para el cuál se crea el patrón (problema que pretende resolver)
|
También conocido como
|
Otros nombres por los cuáles se conoce al patrón
|
Motivación
|
Escenario de ejemplo de uso del patrón
|
Aplicabilidad
|
Usos comunes y criterio de aplicabilidad del patrón
|
Estructura
|
Representación gráfica del patrón: todos sus componentes y las relaciones entre ellos
|
Componentes (Participantes)
|
Lista de componentes o recursos que intervienen en el patrón y sus roles en el diseño así como los enlaces a sus respectivas documentaciones en el caso que sean componentes de arquitectura en uso
|
Colaboraciones
|
Descripción de las interacciones entre los diversos componentes del patrón
|
Consecuencias
|
Descripción de los resultados, efectos colaterales o compensaciones causadas por el uso del patrón (consecuencias positivas y negativas de su uso)
|
Implementación
|
Descripción de la implementación del patrón (técnicas y comentarios oportunos para poder llevarlo a la realidad)
|
Código de ejemplo
|
Código fuente asociado a la implementación del patrón
|
Usos conocidos
|
Lista de casos reales de implementación del patrón
|
Patrones relacionados
|
Otros patrones que tienen relación con el patrón así como diferencias con patrones similares
|
Bibliografía
- Design Patterns (ISBN 0-201-63361-2). Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
0 comentarios:
Publicar un comentario