Upload
mario-solarte
View
14.614
Download
0
Embed Size (px)
DESCRIPTION
Diapositivas curso Ambientes de Desarrollo
Citation preview
15/06/2010
Patrones
Los Patrones son estructuras reutilizables en
la construcción de aplicaciones.
Pueden ser:
De Diseño
De Interfaz
Arquitectónicos
otros
15/06/2010
Patrones - Introducción
Los Patrones de Diseño nos hablan de como
construir software, de como utilizar las
clases y los objetos de forma conocida.
Es necesario tener conocimientos previos de
Programación Orientada a Objetos para
entender los Patrones
15/06/2010
Orígenes 1/4
Los precedentes a los patrones de diseño
vienen del campo de la Arquitectura,
Christopher Alexander a finales de los 70
escribe varios libros acerca de urbanismo y
construcción de edificios, y se plantea reutilizar
diseños ya aplicados en otras construcciones
que cataloga como modelos a seguir.
15/06/2010
Orígenes 2/4
“Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada más de un millón de veces sin hacerlo ni siquiera dos veces de la misma forma”
Christopher Alexander
15/06/2010
Orígenes 3/4
En 1987 Ward Cunningham y Kent Beck utilizan las
ideas de Alexander para desarrollar un lenguaje de patrones
como guía para los programadores de Smaltalk, dando
lugar al libro "Using Pattern Languajes for Object-Oriented
Programs".
Posteriormente en 1991 Jim Coplien publica el libro
"Advanced C++ Programming Styles and Idioms", donde
realiza un catalogo de "idioms" (especie de patrones)
15/06/2010
Orígenes 4/4
Entre 1990 y 1994, Erich
Gamma, Richard Helm, Ralph
Johnson y Hohn Vlissides
realizan el primer catálogo de
patrones de diseño, que publican
en el libro "Design Patterns:
Elements of Reusable Object-
Oriented Software" (Gang of
Four) (la pantilla de los cuatro).
15/06/2010
Patrones
Concepto 1/3
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
proyecto a desarrollar.
15/06/2010
Patrones de Diseño
Concepto 2/3
Un patrón es una solución de diseño
de software a un problema, aceptada
como correcta, a la que se ha dado un
nombre y que puede ser aplicada en
otros contextos.
15/06/2010
Patrones de Diseño
Concepto 3/3
Son un mecanismo popular para describir
soluciones generales de problemas de diseño que
pueden ser reusadas en la construcción de
aplicaciones. Cada patrón prescribe una estructura
de clases, sus roles y colaboraciones, y una
adecuada asignación de métodos para resolver un
problema de diseño en una manera flexible y
adaptable.
15/06/2010
Clasificación
Patrones de Creación
Patrones de Estructura
Patrones de
Comportamiento Patrones de Análisis
Patrones de Arquitectura
Patrones de Interfaces
Patrones de Organización
Patrones de Programación
15/06/2010
Características
Son soluciones concretas.
Son soluciones técnicas.
Se utilizan en situaciones frecuentes.
Favorecen la reutilización de código.
El uso de un patrón no se refleja en el
código.
Es difícil reutilizar la implementación de un
patrón.
15/06/2010
Formas de Descripción
Nombre
Intención
Otros Nombres
Motivación
Aplicaciones
Estructura
Participantes
Colaboraciones
Consecuencias
Implementación
Ejemplo
Usos Conocidos
Patrones Relacionados
15/06/2010
Ejemplo 1/7
Nombre: Builder
Intención: Permite a un cliente crear un objeto
especificando tipo y contenido, ocultandose el resto de
detalles.
Otros Nombres: Builder, Creador
Motivación: La creación de objetos o instanciación de
clases es uno de los temas más frecuentes en la
Programación Orientada a Objetos. Este patrón permite
tener una política general para la creación de objetos,
centralizandolo en una clase Builder.
15/06/2010
Ejemplo 2/7
Aplicaciones: Una clase superior Builder se aplica en
la creación de clases menores...
Cuando sea necesario crear y agregar
instancias de clases.
Cuando sea necesario contener múltiples
instancias de clases.
Cuando la clase superior dispone de los datos
necesarios para la clase a instanciar.
15/06/2010
Consecuencias:
Reduce el acoplamiento.
Permite variar la representación interna de estructuras
compleja, respetando la interfaz común de la clase
Builder.
Se independiza el código de construcción de la
representación.
Las clases concretas que tratan las representaciones
internas no forman parte de la interfaz del Builder.
Ejemplo 5/7
15/06/2010
Consecuencias:
Cada ConcreteBuilder tiene el código especifico para
crear y modificar una estructura interna concreta.
Distintos Director con distintas utilidades pueden
utilizar el mismo ConcreteBuilder.
Permita un mayor control en el proceso de creación
del objeto.
El Director controla la creación paso a paso, solo
cuando el Builder ha terminado de construir el objeto
lo recupera el Director.
Ejemplo 6/7
15/06/2010
Implementación: El Builder posee un interfaz con
cada operación que se puede realizar, el
ConcreteBuilder implementa esas operaciones.
Usos Conocidos: Tratamiento de diferentes
formatos de archivos. Creación de objetos
complejos independientes de los elementos que lo
componen
Patrones Relacionados: Composite. Director.
Método Factoría.
Ejemplo 7/7
15/06/2010
Patrones de GRASP 1/2
Los patrones GRASP (patrones
de los principios generales para
asignar responsabilidades)
describen los principios
fundamentales de la asignación
de responsabilidades a objetos,
expresados en forma
estructurada.
Libro “ULM y Patrones” de Craig Larman
15/06/2010
Patrones de GRASP 2/2
Patrón Experto
Patrón Creador
Patrón Bajo Acoplamiento
Patrón Alta Cohesión
Patrón Controlador
15/06/2010
Patrón Experto
Problema: ¿Cuál es el principio
fundamental en virtud del cual se asignan
las responsabilidades en el diseño orientado
a objetos?
Solución: Asignar una responsabilidad al
experto en información: la clase que cuenta
con la información necesaria para cumplirla
15/06/2010
Aplicación del Patrón
Experto 3/4
:Venta vli:VentaLineade
Producto
:VentaLineade
Producto
:Especificacion
deProducto
:Factura
1: t:=total()
2: :[para_cada]vli:=siguiente()
3: st:=subtotal()
4: :p:=precio()
15/06/2010
Aplicación del Patrón
Experto 4/4
Clase: Venta
Responsabilidad: conoce el total de la venta
Clase: VentaLineadeProducto
Responsabilidad: conoce el subtotal de la
línea de producto
Clase: EspecificaciondeProducto
Responsabilidad: conoce el precio del
producto
15/06/2010
Beneficios del Patrón
Experto
Se conserva el encapsulamiento
Bajo acoplamiento
Distribución del comportamiento entre
clases que tienen la información necesaria
para cumplir con una tarea en conjunto
Alta Cohesión
15/06/2010
Patrones de
Arquitectura 1/3
Servidor web +
Autentificación +
Gestión Cookies
http Servidor de
Aplicaciones +
Sesiones
Páginas Servidor
+ Motores del
Servicio
Páginas HTML +
formularios
Navegador +
Cookies
15/06/2010
Páginas HTML +
formularios
http
Servidor de
Aplicaciones +
Sesiones
Páginas Servidor +
Motores del Servicio
Scripts + XML +
XML + Applets +
JavaBeans
Navegador +
Cookies
Servidor web +
Autentificación +
Gestión Cookies
Patrones de
Arquitectura 2/3
15/06/2010
Páginas HTML +
formularios
http
Servidor de
Aplicaciones +
Sesiones
Páginas Servidor +
Motores del Servicio
Scripts + XML +
XML + Applets +
JavaBeans
Navegador +
Cookies
Servidor web +
Autentificación +
Gestión CookiesDCOM +
RMI +
CORBA
Patrones de
Arquitectura 3/3
15/06/2010
Patrones de Interfaz 1/3
Algunos ejemplos son:
Formatos de Fechas
Vista Previa
Scrollbar
Menú Flotante
y muchos más
15/06/2010
Procesos de Desarrollo
con PatronesOrganización por Organización en el tiempo
COMPONENTES DE SOPORTE
COMPONENTES DEL PROCESO
Iteraciones
Inicial
Est_Pre For_Pro Eje_Pro Val_Sol
Prep.#1
Prep.#2
Const.#1
Const.#2
Const.#N
Trans.#1
Trans.#2
FASESComponentes
Captura de Requisitos
Análisis
Diseño
Implementación
Pruebas
Puesta en Servicio
Modelado de la Organización
Gestión de Configuración y Cambios
Gestión del Proyecto
Entorno