Está en la página 1de 30

08/08/2010

GESTION DE PROYECTOS
DE TI

Diseño de Software

Tema:
Patrones de Software

1
08/08/2010

Agenda

1. Algunos aspectos generales sobre patrones.


2. Clasificación de Patrones.

1.- Algunos aspectos


generales sobre
patrones

2
08/08/2010

1.- Aspectos generales sobre Patrones de Software

Un patrón captura la estructura esencial de


soluciones comprobadas a problemas recurrentes
en un cierto contexto y sistema de fuerzas.

1.- Aspectos generales sobre Patrones de Software

Historia

El arquitecto Christopher Alexander escribió varios libros sobre


planificación urbana y arquitectura de edificios e introdujo el
concepto de patrón.
1987 - Ward Cunningham y Kent Beck usaron varias de las ideas
de Alexander para desarrollar un pequeño lenguaje de patrones
para programadores noveles de Smalltalk.
1991 - Jim Coplien publica Advanced C++ Programming Styles
and Idioms que compila un catálogo de idioms para C++.
1994 - Se publica el libro Design Patterns : Elements of
Reusable ObjectOriented Softwarepor GoF.

3
08/08/2010

1.- Aspectos generales sobre Patrones de Software


Ventajas

Ayudan a los desarrolladores de software a resolver problemas


comunes encontrados durante todo el proceso de la Ingeniería del
Software.
Ayudan a crear un vocabulario y un lenguaje compartidos para
comunicar experiencias sobre dichos problemas y sus soluciones.
Comunican las razones de determinadas decisiones de diseño y
no únicamente las soluciones. Lo hacen dando un nombre y
codificando formalmente dichos problemas y sus soluciones.

1.- Aspectos generales sobre Patrones de Software


Tipos de Patrones

El foco inicial, sobre todo a raíz del libro de GoF, fue sobre
patrones de diseño. Pero existe otros tipos:

Patrones de análisis
Patrones organizativos
Organización del desarrollo
Proceso software
Planificación de proyectos
Ingeniería de requerimientos

4
08/08/2010

2.- Clasificación de Patrones:


Tipos de Patrones

Según Frank Buschman los patrones se pueden clasificar en:

Arquitectura: Expresan una estructura fundamental de


organización de los sistemas SW.
Diseño: Proporcionan un esquema para refinar subsistemas o
componentes. Resuelven problemas específicos de diseño.
Idioms: Son específicos de un lenguaje de programación.
Describen cómo implementar ciertos aspectos de un problema
utilizando las características de un lenguaje de programación.

2.- Clasificación de Patrones:


Tipos de Patrones

Teniendo en cuenta el nivel de detalle:

Arquitectura: Afectan a la estructura


global del sistema.
Diseño: Definen microestructuras de
subsistemas y componentes.
Idioms: Se centran en detalles de la
estructura y comportamiento de un
componente.

5
08/08/2010

2.- Clasificación de Patrones:

Patrones de Arquitectura

2.- Clasificación de Patrones:


Del Caos a la Organización

a.- Capas (Layers)

Descompone una aplicación en un


conjunto de capas independientes y
ordenadas jerárquicamente.
Cada nivel o capa usa los servicios de
la capa inmediatamente inferior y ofrece
servicios a la capa inmediatamente
superior.

6
08/08/2010

2.- Clasificación de Patrones:


Del Caos a la Organización
a.- Capas (Layers) : Estructura

2.- Clasificación de Patrones:


Del Caos a la Organización
a.- Capas (Layers)

7
08/08/2010

2.- Clasificación de Patrones:


Del Caos a la Organización
a.- Capas (Layers)

2.- Clasificación de Patrones:

Del Caos a la Organización

b.- Pipes y Filters


Provee una estructura para sistemas que procesan un flujo de
datos. Cada etapa del proceso es encapsulada como un filtro.
Los datos se pasan entre filtros adyacentes mediante Pipes.

c.- Blackboard
Útil para sistemas en que no se conoce una solución o estrategia
determinista. Varios subsistemas especializados ensamblan su
conocimiento para construir una posible solución parcial.

8
08/08/2010

2.- Clasificación de Patrones:


Sistemas Distribuidos
a.- Broker o Intermediario

Este patrón de arquitectura se usa para organizar


sistemas distribuidos con componentes débilmente
acoplados que interactúan entre sí invocando
servicios remotos.
El broker es responsable de coordinar la
comunicación: cursa las peticiones de servicios
remotos al servidor que corresponda en cada caso, y
transmite a los usuarios los resultados de sus
peticiones y las eventuales excepciones, si las hay.

2.- Clasificación de Patrones:


Sistemas Distribuidos
a.- Broker o Intermediario: Ejemplo

9
08/08/2010

2.- Clasificación de Patrones:


Sistemas Distribuidos
a.- Broker o Intermediario: Estructura

El cliente es una aplicación que accede a los servicios de uno o más
servidores a través del broker.
El servidor implementa unas ciertas funcionalidades (servicios). Se registra
en el broker indicándole su nombre y ubicación.
La pasarela es un componente opcional que encapsula detalles de
implementación si en el sistema hay dos o más brokers que usan diferentes
protocolos de red.
Los filtros del cliente y del servidor están para realizar operaciones del
tipo:
Traducción de los datos a formatos independientes de la máquina.
Encapsular funciones específicas de la máquina del cliente o del servidor.
El broker está entre los clientes y los servidores, que se comunican a través de
él.

2.- Clasificación de Patrones:


Sistemas Distribuidos
a.- Broker o Intermediario

10
08/08/2010

2.- Clasificación de Patrones:


Sistemas Interactivos
a.- Modelo-Vista-Controlador

El patrón Modelo-Vista-Controlador (MVC) descompone una


aplicación interactiva en tres grandes bloques:

El modelo contiene los datos y la funcionalidad de la aplicación.


Es independiente de la representación de los datos.
Las vistas muestran la información al usuario de una cierta
forma. Existen todas las que se necesite definir.
Cada vista tiene un controlador asociado. Los controladores
reciben entradas en forma de eventos que responden a mandos
realizados por el usuario a través del ratón o del

2.- Clasificación de Patrones:


Sistemas Interactivos

a.- Modelo-Vista-Controlador: Estructura

11
08/08/2010

2.- Clasificación de Patrones:


Sistemas Interactivos

a.- Modelo-Vista-Controlador: Estructura

2.- Clasificación de Patrones:

Sistemas Interactivos

a.- Modelo-Vista-Controlador: Estructura

12
08/08/2010

2.- Clasificación de Patrones:

Sistemas Interactivos

a.- Modelo-Vista-
Controlador:
Diagrama de
Clases

2.- Clasificación de Patrones:

Sistemas Interactivos

a.- Modelo-Vista-
Controlador:
Dinámica

13
08/08/2010

2.- Clasificación de Patrones:

Sistemas Interactivos

a.- Modelo-Vista-
Controlador:

2.- Clasificación de Patrones:


Sistemas Interactivos
a.- Modelo-Vista-
Controlador:

14
08/08/2010

2.- Clasificación de Patrones:


Sistemas Interactivos
b.- Presentación-Abstracción-Control

Se usa en aplicaciones interactivas que requieren una interfaz


de usuario flexible.
Se tiene por lo tanto un problema idéntico al que resuelve el
patrón Modelo-Vista-Controlador (MVC). Sin embargo, la
solución es algo diferente.
Se basa en el empleo de agentes. Lo que se busca es un
mayor grado de modularidad y de portabilidad.

2.- Clasificación de Patrones:


Sistemas Interactivos
b.- Presentación-Abstracción-Control: Niveles
Almacén de Datos

Acceso a Datos Agente de Nivel Superior

Agente de Nivel
Formulario Coordina Vistas Intermedio

Agentes de Nivel Gráfico de Tarta Gráfico de Barras Distribución


Básico Escaños

15
08/08/2010

2.- Clasificación de Patrones:


Sistemas Interactivos

b.- Presentación-
Abstracción-
Control:
Diagramas de
Clases

2.- Clasificación de Patrones:


Sistemas Interactivos
b.- Presentación-Abstracción-Control: Diagramas de Clases

16
08/08/2010

2.- Clasificación de Patrones:


Sistemas Adaptables
a.- Microkernel
Este patrón se aplica en sistemas software cuyos
requisitos deben de poder modificarse a lo largo del
tiempo. Es apropiado cuando se necesita desarrollar
una familia de aplicaciones similares que usan
interfaces de programación parecidos para acceder a
una funcionalidad básica común pocos recursos del
sistema (memoria, tiempo de CPU, etc.)
La funcionalidad que no se encuentra en el
microkernel se ubica en otros dos tipo de paquetes:
servidores internos (a los que sólo el microkernel
tiene acceso directo) y servidores externos, con los
que comunican los clientes

2.- Clasificación de Patrones:


Sistemas Adaptables
b.- Reflexión

Este patrón se usa para diseñar sistemas software muy flexibles


y fácilmente modificables.
Se trata de poder modificar la estructura o el comportamiento
del sistema dinámicamente.
Este patrón permite cambios en la estructura de los datos
internos del sistema y en los mecanismos de llamada de las
funciones.

17
08/08/2010

2.- Clasificación de Patrones:


Sistemas Adaptables
b.- Reflexión

Ejemplo: Una aplicación que


necesita guardar objetos en
disco y volverlos a leer de
nuevo. Si se hace un método
especifico para cada tipo de
objeto, eso es poco flexible y
es una posible fuente de
errores. Si cambia la
estructura de clases de la
aplicación, se ha de
modificar estos métodos!!!!!

2.- Clasificación de Patrones:


Sistemas Adaptables
b.- Reflexión
Cambiar un sistema software es una tarea complicada y con alto riesgo
de error. Es fácil que un cambio en la funcionalidad afecte a múltiples
módulos. Aparte, cada cambio debe ser verificado posteriormente. Todo
lo que sea prever la posibilidad de cambios es una mejora del producto.

18
08/08/2010

2.- Clasificación de Patrones:


Sistemas Adaptables
b.- Reflexión
Solución!!!

Diferenciar en el sistema entre nivel abstracto o metanivel y nivel


básico.
El metanivel contiene una representación de la estructura interna
del software. Esta compuesto de metaobjetos.
Los metaobjetos tienen información sobre la estructura interna del
sistema.
El nivel básico define la funcionalidad del sistema. Utiliza los
metaobjetos para no depender de aquellos aspectos del sistema que
pueden cambiar. No cambian, pues las modificaciones las gestiona el
metaobjeto.

2.- Clasificación de Patrones:


Sistemas Adaptables
b.- Reflexión
En el sistema de almacenamiento de objetos en disco que
se ha puesto de ejemplo, la información sobre la
estructura interna de un objeto dado está accesible y es
posible iterar con ella sobre cualquier estructura de datos
de tipo arbitrario dividiéndola en tipos básicos que el
método de almacenamiento sabe cómo almacenar en
disco.

Cuando se cambia la estructura interna de los objetos, el


componente de almacenamiento de los objetos en disco,
se modifica automáticamente de acuerdo a la nueva
estructura.

19
08/08/2010

2.- Clasificación de Patrones:


Patrones de Diseño

Cada patrón de diseño se centra en un problema de diseño


particular y describe cuando es o no aplicable a la luz de otras
restricciones de diseño.

Clasificación de patrones de diseño (Tipo)

2.- Clasificación de Patrones:


Patrones de Diseño

Clasificación de patrones de diseño (Ámbito)

20
08/08/2010

2.- Clasificación de Patrones:


Patrones Creacionales

a.- Abstract Factory

Proporcionar una interfaz para crear familias de objetos


relacionados o dependientes sin especificar sus clases concretas.

Es aplicable:
Cuando un sistema deba ser independiente de la creación, composición y
representación de sus productos.
Cuando un sistema deba ser configurado con una de las múltiples familias
de productos.
Cuando un conjunto de objetos relacionados se diseña para ser usado
conjuntamente.
Cuando se desea proporcionar una biblioteca de productos de los que sólo
se quiere conocer su interfaz.

2.- Clasificación de Patrones:


Patrones Creacionales

a.- Abstract Factory

21
08/08/2010

2.- Clasificación de Patrones:


Patrones Creacionales

a.- Abstract Factory

Abstract Factory: declara una interfaz para operaciones que


crean productos abstractos.
Fabrica Concreta: implementa las operaciones para crear
productos concretos.
ProductoAbstracto: declara una interfaz para un tipo de
producto.
ProductoConcreto: define un producto para ser creado por la
fabrica concreta correspondiente. Implementa la interfaz del
producto abstracto
Cliente: usa solamente las interfaces de las fábricas y los
productos abstractos.

2.- Clasificación de Patrones:


Patrones Creacionales

b.- Singleton

Propósito:
Asegurar que una clase tiene una instancia única y proporcionar
un punto de acceso global a ella.

Aplicable cuando:
Se quiere que una clase tenga una instancia única
globalmente accesible.
La instancia única podría ser extensible por una
subclase, y los clientes podrían usar una instancia
extendida sin modificar su código.

22
08/08/2010

2.- Clasificación de Patrones:


Patrones Creacionales

b.- Singleton: Estructura

2.- Clasificación de Patrones:


Patrones estructurales

a.- Composite

Componer objetos en una estructura de árbol para representar


relaciones todo-parte y que los clientes traten uniformemente
objetos simples y compuestos

Es aplicable:

Cuando se requiere representar jerarquías todo-parte


Los clientes deben ignorar las diferencias entre objetos
individuales y objetos compuestos.

23
08/08/2010

2.- Clasificación de Patrones:


Patrones estructurales

a.- Composite: Estructura

2.- Clasificación de Patrones:


Patrones estructurales

a.- Composite: Estructura

Componente: Declara la interfaz para los objetos de


la composición implementa comportamiento por
defecto para dicho interfaz declara interfaz para
acceder y manipular objetos hijos.
Compuesto: Define el comportamiento de los
objetos que pueden contener a otros y almacena
componentes hijos.
Hoja: Define el comportamiento de los objetos
primitivos
Cliente: Interacciona los objetos de la composición a
través del interfaz Componente

24
08/08/2010

2.- Clasificación de Patrones:


Patrones estructurales

b.- Proxy

Proporcionar un sustituto o suplente para otro objeto, de


forma que controle el acceso a él.

Es aplicable:

Cuando se desea hacer transparente el acceso a un objeto que


puede estar en el mismo espacio de direcciones o en otro.
Cuando se desea controlar la creación de objetos ‘costosos’.
Cuando se desea añadir seguridad o control al acceso sobre un
objeto existente.

2.- Clasificación de Patrones:


Patrones estructurales

b.- Proxy: Estructura

25
08/08/2010

2.- Clasificación de Patrones:


Patrones estructurales
b.- Proxy: Estructura

Proxy:
Mantiene la referencia que le permite el acceso al
ElementoReal.
Proporciona una interfaz idéntica a la de Elemento,
de forma que el Proxy puede ser sustituido por el
ElementoReal.
Controla el acceso sobre el ElementoReal.
Realiza las tareas especificas para proporcionar
acceso remoto, carga diferida o protección y seguridad.
Elemento: Define la interfaz común para el
ElementoReal y para el Proxy.
ElementoReal: Define el objeto real al que el Proxy
representa.

2.- Clasificación de Patrones:


Patrones de Comportamiento
a.- Iterator

Proporcionar acceso secuencial a un agregado sin exponer su


representación

Es aplicable:

Para acceder a un agregado sin exponer su estructura interna.


Para soportar distintos tipos de recorrido en un mismo agregado.
Para proporcionar un interfaz común para recorrer diferentes
estructuras de agregados (iteración polimórfica).

26
08/08/2010

2.- Clasificación de Patrones:


Patrones de Comportamiento
a.- Iterator: Estructura

2.- Clasificación de Patrones:


Patrones de Comportamiento
a.- Iterator: Estructura

Iterador: define la interfaz para acceder y recorrer los


elementos
IteradorConcreto:
Implementa la interfaz de Iterador
Realiza el seguimiento de la posición actual en el
recorrido del agregado
Agregado: define la interfaz para la creación de un
objeto Iterador
AgregadoConcreto: Implementa la interfaz de
creación del Iterador devolviendo una instancia del
IteradorConcreto Adecuado

27
08/08/2010

2.- Clasificación de Patrones:


Patrones de Comportamiento
b.- State

Permite que un objeto modifique su comportamiento cuando


cambie su estado interno. Parecerá que el objeto cambie de
clase.

Es aplicable:

El comportamiento de un objeto depende de su estado y debe


cambiar en tiempo de ejecución dependiendo de ese estado.
Las operaciones tienen sentencias condicionales múltiples que
dependen del estado del objeto, que normalmente se representa con
una constante. A menudo varias operaciones tienen la misma
estructura.

2.- Clasificación de Patrones:


Patrones de Comportamiento
b.- State: Estructura

28
08/08/2010

2.- Clasificación de Patrones:


Patrones de Comportamiento
b.- State: Estructura

Contexto: define el interfaz de interés para los


clientes, manteniendo una instancia de la subclase
EstadoConcreto que define el estado actual.
Estado: define una interfaz para encapsular el
comportamiento asociado a un estado particular de
Contexto.
EstadoConcretoA, EstadoConcretoB,...: cada
subclase implementa un comportamiento asociado
con un estado de Contexto.

Actividad 1:

Utilización de Patrones

29
08/08/2010

Resumen

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.
La importancia de los patrones radica principalmente en que ayudan a
los desarrolladores de software a resolver problemas comunes
encontrados durante el desarrollo del software.
Además permiten comunicar las razones de determinadas decisiones de
diseño y no únicamente las soluciones.

Resumen

Existen los siguientes tipos de patrones:


Patrones de análisis
Patrones organizativos
Organización del desarrollo
Proceso software
Planificación de proyectos
Ingeniería de requerimientos

Además dichos patrones se pueden clasificar en:


Patrones de arquitectura
Patrones de diseño
Patrones de lenguaje

30

También podría gustarte