You are on page 1of 32

Seminario de Patrones de Software

MCs Javier Gonzlez Snchez


javiergs@acm.org

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.

7. Patrones en la vida real. Casos de estudio: patrones en proyectos de su empresa.

javiergs@acm.org

1.1.

Principios de patrones de software:


conceptos

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

Requerimientos Analisis Diseo - Implementacion -- Pruebas abstracto iteraciones concreto

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

23 Patrones de diseo GoF


Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides) :: 1990

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.

Principios de patrones de software:


en prctica

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

a) Relaciones b) Mini-componentes incluyentes c) Autonoma d) Estndar e) El cambio es mi amigo f) Creatividad

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.

Principios de patrones de software:


adopcin

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

Cualidades del Software


Estticas: Modificabilidad, Portabilidad, Reusabilidad, Integrabilidad, Verificabilidad. Dinmicas: Desempeo, Disponibilidad, Funcionalidad, Usabilidad. Arquitectnicas: Integridad Conceptual, Correctitud, Completitud, Factibilidad econmica
javiergs@acm.org

27

Modelo de Aplicacin

javiergs@acm.org

28

1.4.

Principios de patrones de software:


clasificacin

Clasificacin
ANTI - PATRONES
Cdigo

Java .Net PHP

Diseo

Creacin Estructura Comportamiento

Pruebas

Arquitectura

PATRONES

Gestin del Proyecto

javiergs@acm.org

30

Cierre del Da 1

javiergs@acm.org

31

Javier Gonzlez Snchez javiergs@acm.org / in / javiergs

javiergs@acm.org

32

You might also like