Professional Documents
Culture Documents
CONTEXTO
ANALISTAS Y DISEADORES
PROGRAMADORES
javiergs@acm.org
ANTECEDENTES
POO
javiergs@acm.org
OBJETIVO
Conocer el concepto de patrn de software y las tres dimensiones del software utilizando patrones: el producto, el usuario y el ambiente. Hacindolo consciente de la necesidad del uso de patrones de software en la aplicacin de metodologas de desarrollo gil. Familiarizarse con el vocabulario de patrones y aplicarlos como una forma de comunicacin compartida por la empresa y los expertos; entender que los patrones nos ayudan a expresar y comunicar conocimiento. Responder a la pregunta genrica cmo fabricar software de manera correcta? Ser capaz de aplicar los patrones en el proceso de creacin de software
javiergs@acm.org
AGENDA
1. Principios de patrones de software: arquitectura, diseo, codificacin y gestin de proyectos. 2. Creacin 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 Gestin del proyecto. Nuevos horizontes en la conceptualizacin de buenas
prcticas.
javiergs@acm.org
1.1.
OOSE
UML
Construir modelos que representan al sistema Cada modelos es examinado o manipulado por un grupo de stakeholders
Objetos, tipos, clases sistemtico cdigo informal Problema real complejo cambiante sistema modelo
OO-SE
javiergs@acm.org
CONCEPTO
"Cada patrn describe un problema que ocurre infinidad de veces en nuestro entorno, as como la solucin al mismo, de tal modo que podemos utilizar esta solucin un milln de veces ms adelante sin tener que volver a pensarla otra vez.
Christopher Alexander (arquitecto) :: 1979
javiergs@acm.org
BENEFICIOS
Formalizar un vocabulario comn. Estandarizar el modo en que se realiza el diseo. Facilitar el aprendizaje condensando conocimiento ya existente
javiergs@acm.org
El modelo LEGO
La creatividad es positiva
componentes
javiergs@acm.org
10
La vida REAL
javiergs@acm.org
11
1.2.
De monitos a CDIGO
lista Clases Mtodos Variables Relaciones Complejidad Tiempo Costo alumno
javiergs@acm.org
tesorera
profesor
grupo
13
De monitos a CDIGO
Un profesor puede estudiar en la escuela (ser alumno). En la universidad existe una tesorera 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
14
Hablando de Relaciones
a) Ser b) Usar c) Tener a) Observar b) Encubrir a c) Decorar a d) Soy nico e) Yo construyo a f) Trabajar con
g) Soy parte de
javiergs@acm.org
15
El modelo LEGO
g) Producto predecible
javiergs@acm.org
16
EJEMPLO DE DISEO
Problema: Restringir la creacin de objetos pertenecientes a una clase o el valor de un tipo a un nico objeto. Solucin : Garantizar que una clase slo tenga una instancia y proporcionar un punto de acceso global a ella. Patrn :
javiergs@acm.org
17
EJEMPLO EN CDIGO
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
18
Y ms
composicin decorador observador
estrategia
fabrica
singleton decorador
javiergs@acm.org
19
Elementos UML
javiergs@acm.org
20
1.3.
Arquitectura y de software
javiergs@acm.org
22
Fundamentos Necesidad
requerimientos
Notacin
modelos (diagramas)
Proceso metodologa
Herramientas
Producto
javiergs@acm.org
23
METODOLOGA
javiergs@acm.org
24
El arquitecto
Arquitectura de software NO IMPLICA DETALLES DE IMPLEMENTACION Arquitecto Obtener Informacin del problema y disear solucin que satisfaga requerimiento (funcionales, no funcionales) PERO Apoyndose en patrones, modelos y Framework ADEMAS DE Participar activamente en el desarrollo. PERO no es un desarrollador Generar lineamientos GENERALES a considerarse en la creacin de FAMILIAS de productos.
javiergs@acm.org
25
Arquitectura y Patrones
fsica Aplicacin o negocio Clase o tipo Estilos arquitectnicos arquitectura Datos
componente
patrn
javiergs@acm.org
26
27
Modelo de Aplicacin
javiergs@acm.org
28
1.4.
Clasificacin
ANTI - PATRONES
Cdigo
Diseo
Pruebas
Arquitectura
PATRONES
javiergs@acm.org
30
Cierre del Da 1
javiergs@acm.org
31
javiergs@acm.org
32