Introducción a Patrones

 
Los temas tratados son: 
    1. Justificación 
    2. Qué es un patrón ? 
    3. Desarrollo histórico 
    4. Clasificación 
    5. Descripción de un patrón 
 

Justificación

 
  • El desarrollo de software es una tarea complicada, la cual depende en gran medida de la experiencia de las personas involucradas, en particular de los desarrolladores.
    • El 80% de los aportes vienen del 20% del personal
  • La comprensión del software es uno de los problemas más complicados en la tarea de mantenimiento y evolución
  • El hombre durante su historia ha dominado cierta técnica pasando por un proceso
    • Se realizan las operaciones de una manera artesanal. Los expertos aprenden por un proceso de ensayo y error y por transmisión de otros expertos
    • Se crea una ciencia alrededor de la tarea
    • Se desarrollan las técnicas generalmente aceptadas en el área
    • Se logra un conocimiento común sobre cómo aplicar las técnicas. Hay un metalenguaje común entre los expertos
  • La sociedad requiere requiere sistemas más complejos y más grandes. Los recursos para desarrollarlos cada vez son mas escasos... Debe existir un mecanismo de reutilización
    • El 80% del esfuerzo esta en el 20% del código desarrollado
 Ir al inicio

Qué es un patrón?

 
  • Un patrón es una unidad de información nombrada, instructiva e intuitiva que captura la esencia de una familia exitosa de soluciones probadas a un problema recurrente dentro de un cierto contexto.
  • El objetivo de los patrones es crear un lenguaje común a una comunidad de desarrolladores para comunicar experiencia sobre los problemas y sus soluciones.
  • Pueden referirse a distintos niveles de abstracción, desde un proceso de desarrollo hasta la utilización eficiente de un lenguaje de programación.
  • Un buen patrón debería (Coplien):
    • Solucionar un problema
    • Ser un concepto probado
    • La solución no es obvia
    • Describe participantes y relaciones entre ellos
    • Tiene un componente humano alto: estética y utilidad
Ir al inicio
 

Desarrollo histórico

 
El término patrón se utiliza inicialmente en el campo de la arquitectura, por Christopher Alexander, a finales de los 70s. Este conocimiento es trasportado al ámbito del desarrollo de software orientado por objetos y se aplica al diseño. De allí es extrapolado al desarrollo en general y a las demás etapas. Algunos libros que marcan el desarrollo del área son: 
  • Alexander, Christopher. A Pattern Language: Towns, Buildings, Construction. 1977
  • Alexander, Christopher. The Timeless Way of Building. 1979
  • Gamma et al. Design Patterns: Elementos of Reusable Object-Oriented Software. 1994
  • Bushmann et al. Pattern-Oriented Software Architecture: A System of Patterns. 1996
  • Coplien y Schmidth. Pattern Languages of Program Design. 1995
Algunos eventos importantes en la historia del tema de patrones en Ingeniería de software son: 
  • 1987. Ward Cunningham y Kent Beck escriben sus experiencias de enseñar Smalltalk por medio de las ideas de Alexander en Using Pattern Languages for Object-Oriented Programs.
  • 1990. El GoF empiezan la recopilación de patrones de diseño
  • 1991. Jim Coplien publica su recopilación de idioms de C++ en Advanced C++ Programming Styles and Idioms.
  • 1994. El GoF publica el libro Design Patterns: Elementos of Reusable Object-Oriented Software.
Ir al inicio
 
 

Clasificación

 
Existen varios tipos de patrones, dependiendo del nivel de abstracción, del contexto particular en el cual aplican o de la etapa en el proceso de desarrollo. Algunos de estos tipos, de los cuales existen publicaciones el arespecto son: 
  • de Diseño
  • Idioms
  • de Arquitectura
  • de Análisis
  • para Ambientes Distribuidos
  • de Negocios
  • de Procesos y Organizacionales
Ir al inicio
 
 
 

Descripción de un Patrón

 
Dependiendo del autor, del nivel de abstracción y de la publicación misma se han presentado varios formatos para encapsular la información de un patrón. Los puntos más significativos que debe contener un patrón son: 
  • Nombre: Significativo y corto, fácil de recordar y asociar a la información que sigue
  • Problema: Un enunciado que describe las metas y objetivos buscados y el contexto
  • Contexto: Define las precondiciones en las cuales ocurren el problema y su solución
  • Fuerzas: Descripción de las fuerzas y restricciones relevantes en el problema y como interactúan o entran en conflicto
  • Solución: Las relaciones estáticas y reglas dinámicas que describen cómo solucionar el problema
  • Ejemplos: Uno o más ejemplos que ilustren el contexto, el problema y su solución
  • Contexto Resultante: El estado en el cual queda el sistema después de aplicar el patrón y las consecuencias de hacerlo
  • Racionalidad: Una explicación justificada de los pasos o reglas en el patrón
  • Relaciones: relaciones estáticas y dinámicas del patrón con otros
  • Usos conocidos: Describe ocurrencias del patrón conocidas y su aplicación dentro de los sistemas existentes
Ir al inicio
 
 



Pablo Figueroa.
comentarios?
1997