Este documento presenta la agenda para un taller sobre patrones de software. El taller se llevará a cabo durante 4 sesiones los sábados de diciembre y enero. La agenda cubrirá conceptos básicos de patrones, patrones para la creación, estructura y comportamiento de objetos, patrones compuestos, y el uso de patrones en la gestión de proyectos. El objetivo del taller es familiarizar a los participantes con el vocabulario y aplicación de patrones de software.
4. EXPECTACTIVAS
¿Qué esperas aprender en este taller ?
javiergs@acm.org 4
5. OBJETIVO
Conocer el concepto de patrón de software y las tres dimensiones del software
utilizando patrones: el producto, el usuario y el ambiente. Haciéndolo consciente de
la necesidad del uso de patrones de software en la aplicación de metodologías
de desarrollo ágil.
Familiarizarse con el vocabulario de patrones y aplicarlos como una forma de
comunicación compartida por la empresa y los expertos; entender que los patrones
nos ayudan a expresar y comunicar conocimiento.
Responder a la pregunta genérica ¿cómo fabricar software de manera
correcta?
Ser capaz de aplicar los patrones en el proceso de creación de software
javiergs@acm.org 5
6. AGENDA
1. Principios de patrones de software: arquitectura, diseño, codificación y gestión de proyectos.
2. Creación de objetos con patrones: Abstract Factory, Factory Method, Builder, Prototype,
Singleton.
3. Estructura de objetos con patrones. Adapter, Bridge, Composite, Decorator, Facade.
4. Comportamiento de objetos con patrones. Chain of Responsabilities, Memento, Observer,
Strategy, Visitor.
5. Patrones de Patrones, combinando conceptos: Blackboard, MVC, Layers, Pipes & Filter.
6. Patrones en la Gestión del proyecto. Nuevos horizontes en la conceptualización de buenas
prácticas.
7. Patrones en la vida real. Casos de estudio: patrones en proyectos de su empresa.
javiergs@acm.org 6
7. CALENDARIO
Sábado 06 de Diciembre de 9:00 a 13:00 hrs.
Sábado 13 de Diciembre de 9:00 a 13:00 hrs.
Sábado 20 de Diciembre de 9:00 a 13:00 hrs.
Sábado 10 de Enero (2009) de 9:00 a 13:00 hrs.
javiergs@acm.org 7
9. CONTEXTO
ANALISTAS Y DISEÑADORES
PROGRAMADORES
javiergs@acm.org 9
10. OOSE
UML
Cada modelos es examinado o
Construir modelos que representan al manipulado por un grupo de stakeholders
sistema
Objetos, tipos, clases
sistemático
código
cambiante
informal modelo
Problema sistema
real
OO-SE
complejo
Requerimientos – Analisis – Diseño - Implementacion -- Pruebas
abstracto - iteraciones - concreto
javiergs@acm.org 10
11. CONCEPTO
"Cada patrón describe un problema que ocurre infinidad de veces en
nuestro entorno, así como la solución al mismo, de tal modo que
podemos utilizar esta solución un millón de veces más adelante sin
tener que volver a pensarla otra vez.“
– Christopher Alexander (arquitecto) :: 1979
23 Patrones de diseño GoF
– Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides) :: 1990
javiergs@acm.org 11
12. BENEFICIOS
Formalizar un vocabulario común.
Estandarizar el modo en que se realiza el diseño.
Facilitar el aprendizaje condensando conocimiento ya existente
javiergs@acm.org 12
13. El modelo LEGO
La “creatividad” es positiva …
… componentes
javiergs@acm.org 13
16. De monitos a CÓDIGO
lista
Clases tesorería
Métodos
Variables
Relaciones profesor
Complejidad
Tiempo
Costo
alumno
grupo
javiergs@acm.org 16
17. De monitos a CÓDIGO
Un profesor puede estudiar en la escuela (ser alumno).
En la universidad existe una tesorería única donde se
concentran todos los pagos.
Un grupo es un conjunto de alumnos que reciben el mismo trato
Cada profesor cuenta con una lista donde registra asistencias y
calificaciones de sus alumnos.
Cuando un alumno no realiza su pago mensual es sacado de su
grupo.
javiergs@acm.org 17
18. Hablando de Relaciones
a) Ser a) Observar
b) Usar b) Encubrir a…
c) Tener c) Decorar a…
d) Soy único
e) Yo construyo a…
f) Trabajar con …
g) Soy parte de …
javiergs@acm.org 18
19. El modelo LEGO
a) Relaciones
b) Mini-componentes incluyentes
c) Autonomía
d) Estándar
e) El “cambio” es mi amigo
f) Creatividad
g) Producto predecible
javiergs@acm.org 19
20. EJEMPLO DE DISEÑO
Problema:
Restringir la creación de objetos
pertenecientes a una clase o el
valor de un tipo a un único objeto.
Solución :
Garantizar que una clase sólo tenga
una instancia y proporcionar un
punto de acceso global a ella.
Patrón :
javiergs@acm.org 20
21. EJEMPLO EN CÓDIGO
public class Tesoreria {
private static Tesoreria TESORERIA = null;
private Tesoreria() {
}
public static Tesoreria getTesoreria() {
if (TESORERIA == null)
TESORERIA = new Tesoreria();
return INSTANCE;
}
// El resto de la clase va aquí
}
javiergs@acm.org 21
28. El arquitecto
Arquitectura de software
NO IMPLICA DETALLES DE IMPLEMENTACION
Arquitecto
Obtener Información del problema y diseñar solución que
satisfaga requerimiento (funcionales, no funcionales)
PERO
Apoyándose en patrones, modelos y Framework
ADEMAS DE
Participar activamente en el desarrollo. PERO no es un desarrollador
Generar lineamientos GENERALES a considerarse en la creación de
FAMILIAS de productos.
javiergs@acm.org 28
29. Arquitectura y Patrones
Aplicación o
física Datos
negocio
Clase o tipo
Estilos
arquitectónicos
arquitectura
componente patrón
javiergs@acm.org 29