SlideShare ist ein Scribd-Unternehmen logo
1 von 97
Downloaden Sie, um offline zu lesen
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Desarrollo Utilizando Patrones Software
M.I. Capel
ETS Ingenierías Informática
y Telecommunicación
Universidad de Granada
Email: manuelcapel@ugr.es

Desarrollo de Software
Ingeniería de Software (3er curso de Grado)

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Índice

1

Introducción
Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones
Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

2

Patrones de Diseño y Calidad del Software

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Índice

1

Introducción
Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones
Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

2

Patrones de Diseño y Calidad del Software

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Conceptos básicos y motivación
Un patrón permite capturar el conocimiento más
importante acerca del diseño de la solución a un
problema, que permite su posterior reutilización
1
2
3

Se aplica en un contexto
Resuelve un problema
Generan indirectamente la solución

La idea de patrón procede de la Arquitectura:
Chistopher Alexander (Buildings Architect)
Each pattern describes a problem that occurs over and over again
in our environment and then describes the core of the solution to
that problem in such a way that you can use the solution a million
times over without ever doing it the same way twice
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Marcos de trabajo

Para desarrollar un diseño completo de un sistema
complejo hay que proporcionar una infraestructura
parecida a un esqueleto de la implementación del sistema
Los marcos de trabajo no son patrones de diseño:
Los patrones de diseño son más abstractos que los marcos
de trabajo
Los patrones de diseño son elementos arquitectónicos más
pequeños que los marcos de trabajo
Los patrones de diseño son más especializados que los
marcos de trabajo

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Definition (Framework)
“Reusable minimum architecture that provides the generic
structure and behaviour for a family of software abstractions,
along with a context . . . that specifies their collaboration and
their use within a given domain"

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Caracterización

Los marcos de trabajo se suelen aplicar sin cambios
Proporcionan una estructura de clases para adaptar
Son generalmente mucho más grandes
arquitectónicamente que los patrones
Son más concretos que los patrones

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Caracterización II

Un patrón de diseño es mucho más que un diagrama de
clases en UML
Son más abstractos que los marcos de trabajo
Los patrones capturan las abstracciones del espacio del
problema que son relevantes para encontrar una solución
Una “metodología de diseño orientada" a objetos ayuda a
obtener una descomposición del sistema

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Clasificación basada en su funcionalidad

Patrones arquitectónicos: intentan reflejar la estructura de
los problemas que resuelven
Patrones de datos: relacionados con la organización de la
información en aplicaciones
Patrones de Diseño Orientado a Objetos:descomposición,
intercomunicación y ubicación de los componentes de un
sistema dentro de una jerarquía de clasificación
Patrones de diseño de interfaces
Patrones para aplicaciones Web

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Patrones de Diseño Orientado a Objetos

Patrones Creacionales: instanciación de objetos
reforzando las restricciones en el tipo y número de objetos
Patrones Estructurales: organización en integración de
clases de objetos dentro de grandes estructuras de
información
Patrones Comportamentales: asignación de
responsabilidades y comunicación entre los objetos

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Ámbito de los patrones actuales

Segundo criterio de clasificación de los patrones de diseño
Las relaciones entre clases y subclases es estática
Los patrones que se refieren a objetos tratan de relaciones
dinámicas
Patrones creacionales de clases vs. de objetos
Patrones comportamentales de clases vs. de objetos

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Tipos de metodologías de diseño orientadas a objetos

Enfocadas hacia la subclasificación
Enfocadas hacia las colaboraciones y responsabilidades
en el sistema objetivo
Enfocada hacia el modelado
Los enfoques anteriores son complementarios

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Aspectos generales comunes

Los patrones de diseño ayudan a determinar
qué es un objeto y hasta donde descomponerlos en
objetos más simples (granularidad)
Determinación de la jerarquía y tipos de clases de objetos
Determinación de la interfaces
Diferencias entre el mecanismo de herencia de las clases
y de las interfaces
Definition (Principio de diseño)
“Program to an interface not to an implementation"

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Descripción de un patrón
Contexto

Problema
Fuerzas

Solución
Intención
Anti-patrones
Patrones relacionados
Referencias

Plantilla
describe el entorno en el que se
ubica el problema incluyendo el
dominio de aplicación
una o dos frases que explican lo que
se pretende resolver
lista el sistema de fuerzas que afectan a la
manera en que ha de resolverse el problema
incluye las limitaciones y restricciones
que han de respetarse
proporciona una descripción detallada
de la solución propuesta para el problema
describe el patrón y lo que hace
“soluciones" que no funcionan en el contexto
o que son peores; suelen ser errores
cometidos por principiantes
referencias cruzadas relacionadas
con los patrones de diseño
reconocimientos a aquellos desarrolladores
que desarrollaron o inspiraron el patrón que se propone
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Tipos de patrones de diseño
Resolución de problemas de diseño utilizando patrones

Lenguajes de patrones
Modelo de Requisitos
Describe el conjunto del problema.
Establece el contexto e identifica
los intereses que dominan en la
búsqueda de un patrón.
Se trata de una colección de patrones de diseño que
colaboran para resolver los problemas dentro de un
dominio de aplicaciones
Se ha de definir una arquitectura software o un marco de
trabajo
Hasta llegar al nivel de patrones de diseño que implican
clases y componentes relacionados
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Diseño basado en patrones dentro de un contexto

Principios Generales de Diseño
I

II
III

IV
V

Descubrir el contexto del problema a partir del modelo de
requerimientos
Extraer los patrones del nivel actual de abstracción
Escoger un esqueleto de implementación que refleje el
contexto
Trabajar siempre hacia dentro del contexto
Refinar el prototipo adaptándolo a las características del
software

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Catálogos de Patrones de Diseño
Existen varios catálogos actualmente:
El denominado "The Gang of Four":
Gamma–Helm–Johnson-Vlissides [Gamma et al., 1995]

Pero no es el único:Coad–North–
Mayfield, [Bass et al., 2012], [Booch, 2008],
Buschmann [Buschmann et al., 1995],
Lethbridge [Lethbridge and Laganiere, 2005], etc.
GoF y “Code Complete" (Steve McConnell, Microsoft) son
los catálogos de patrones de diseño de referencia
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Tareas de diseño

Desarrollar una jerarquía de entidades de análisis del
problema [Bruegge and Dutoit, 2013]
Determinar existencia de un lenguaje de patrones aplicable
Determinación de patrones arquitectónicos candidatos
Utilizar las colaboraciones entre patrones de más bajo nivel
Buscar los patrones de diseño de interfaces adecuados
Independientemente del nivel de abstracción, compararlo con
otras soluciones pre-existentes

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Abstracción–caso

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Abstracción–caso-2

Titulo
Nombre
Autor
ISBN
fechaPublicacion
bibliotecaNacional

Ejemplar
materializacionnumeroCodigodeBarras

1..*

Plantilla–ejemplo para el patrón Abstracción-caso

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Ejemplar

Titulo
Nombre
Autor
ISBN
fechaPublicacion
bibliotecaNacional

Titulo
Autor
ISBN
fechaPublicacion
bibliotecaNacional
numeroCodigoBarras

Viajes Gulliver

Mobby Dick

Ejemplar
numeroCodigoBarras

Forma inapropiada de representar abstracciones y casos

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Patrones Relacionados

El catálogo GoF propone los patrones: Prototype y
Flyweight que pueden considerarse como relacionados
con Abstracción–Caso
El patrón de diseño Prototype: especifica la tipología de
los objetos a crear utilizando una clase de prototipo
Los nuevos objetos se crean copiando el prototipo
El patrón de diseño Flyweight utiliza compartición del
estado intrínseco de objetos de granularidad fina para
evitar creación masiva de estos objetos en una aplicación

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Actor–Papel

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

interpreta

Actor

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

RolAbstracto

1..*

Rol-2

Rol-1

Plantilla del patrón Actor–Papel

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

SituacionAcademica

TiempoParcial

asiste
1

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Alumno

DedicacionCompleta

acredita
1

Graduado

Ejemplo del patrón Actor–Papel

M.I.Capel

Tema 1

NivelEstudios

PreGraduado
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Adaptador

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Superclase
metodoPolimorfico()
Nota
metodoPolimorfico()()
{
return
adaptado.metodoAdaptado();
}

Adaptador

Adaptado
1

metodoAdaptado()

Plantilla del patrón de diseño Adaptador

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Figura3D
volumen()
Toro
volumen()
{
return
toroPrev.calcVolumen();
}

Toro

Esfera

ToroPrev
1

Ejemplo con el patrón de diseño Adaptador

M.I.Capel

Tema 1

calcVolumen()
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Composite

Se trata de un patrón de diseño para el particionamiento
Mediante este patrón, un grupo de objetos es tratado de la
misma forma que un solo objeto
“Componer" objetos en estructuras en forma de árbol
abstracto para representar jerarquías todo–parte
Con este tipo de representación las aplicaciones–cliente
pueden procesar de manera uniforme los objetos
individuales y las composiciones de objetos

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Client

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Component
Operation()
Add(Component)
Remove(Component)
GetChild(int)
children
Leaf

Composite

Operation()

Operation()
Add(Component)
Remove(Component)
GetChild(int)

Diagrama de clases del patrón Composite

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

¿Cuándo utilizar el patrón “Composite"?

Es necesario componer objetos para formar árboles que
representen jerarquías
Hay que representar (abstractamente) objetos primitivos
(leaf) y sus contenedores
Los contenedores pueden ser agregados de otros
contenedores o de objetos
Hay operaciones del contenedor que aplican a todos los
descendientes (children)

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

¿Para qué utilizar el patrón “Composite"

Para conseguir que los clientes ignoren la diferencia entre
objetos individuales y agregaciones de objetos
(Composite)
Para que los clientes traten a todos los objetos de una
agregación de manera uniforme
Para hacer más fácil la inclusión de nuevos componentes
Para hacer el diseño más general

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Componente

contiene
*

Contenedor

Panel

Etiqueta

Boton

Ventana

Ejemplo utilización patrón Composite

M.I.Capel

Tema 1

Lista
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Delegación

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Delegante
Nota
metodoDelegador()
{
delegado.metodo();
}

metodoDelegador()

Delegado
1

Plantilla del patrón Delegación

M.I.Capel

Tema 1

metodo()
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Pila

ListaEnlazada

push()
pop()
estaVacia()

Nota
push()
{

1

lista.insertaPrimero();
}

insertaPrimero()
insertaUltimo()
insertaDetras()
eliminaPrimero()
eliminaUltimo()
elimina()
estaVacia()

Ejemplo del patrón de diseño Delegación

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Fachada

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

PackageClase1
1
Fachada

*

1
1

PackageClase2
*
*

Nota
Contiene un subconjunto de
métodos públicos tal que
los otros subsistemas no
tendrán que acceder a las
clases dentro de los paquetes

Plantilla del patrón Fachada

M.I.Capel

Tema 1

PackageClase3
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

VueloRegular
1

LineaAerea

*
Pasajero

1

encuentraVuelo()
hacerReserva()
eliminarReserva()

*

Ejemplo con el patrón de diseño Fachada

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Factoría Abstracta
Definition (Intención del Patrón)
Proporcionar una interfaz para crear familias de objetos
relacionados sin tener que especificar las clases a las que
pertenecen.
Definition
Queremos ofrecer una biblioteca de clases de productos pero
revelar sólo sus interfaces, no sus implementaciones
Definition
Queremos imponer que una familia de productos relacionados
sean utilizados conjuntamente por las aplicaciones
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Factoría Abstracta 2

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Plantilla del patrón Factoria Abstracta

DemandanteCreacion

<<interface>>
Factoria
1
crearInstancia()

*
ClaseGenerica

ClaseEspecificaApl

FactoriaEspecificaApl

crear

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Factoría Abstracta
Factoría: declara una interfaz para las operaciones de
creación de productos abstractos
Factoría Específica de la Aplicación: programan las
operaciones para crearse objetos–producto concretos
Clase Genérica: declara una interfaz para un tipo concreto
de objetos–producto
Clase Específica de la Aplicación: programa el
objeto–producto que va a ser creado por la factoría
correspondiente; implementa la interfaz en clase genérica
Demandante Creación: sólo usa las interfaces declaradas
en ClaseGenerica y Factoria

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

¿Cuándo utilizar “Flyweight"
Han de darse todas las condiciones siguientes
La aplicación utiliza un número grande de objetos (baja
granularidad)
Altos costes de almacenamiento debido a la cantidad de
objetos
La mayoría del estado de un objeto se puede convertir en
extrínseco
Después de encapsular el estado extrínseco, muchos
grupos de objetos pueden ser reemplazados por un
número relativamente pequeño de objetos compartidos
No se depende de la identidad de los objetos

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

FactoriaFlyweight

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Flyweight

flyweights

Operacion(estadoExtrinseco)

FlyweightConcreto

FlyweightConcretoNoCompartido

estadoIntrinseco
Operacion(estadoExtrinseco)

todosEstados
Operacion(estadoExtrinseco)

Cliente

Ejemplo del patrón Flyweight

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

¿Para qué utilizar el patrón “Flyweight"

Para ahorrar espacio: mayor cuanto más estado intrínseco
de los objetos se pueda compartir
Para negociar el espacio del estado extrínseco por tiempo
de cómputo (si se puede calcular el estado)
Para representar estructuras jerárquicas combinado con el
patrón Composite
Pero, los nodos–hojas representados por “flyweights" no
pueden contener un puntero a su nodo superior

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

ElementoEscritura
Dibujar(Contexto)
Intersectar(Punto,Contexto)
descend

Fila
Dibujar(Contexto)
Intersectar(Punto,Contexto)

descend

Caracter
char c
Dibujar(Contexto)
Intersectar(Punto,Contexto)

Columna

Dibujar(Contexto)
Intersectar(Punto,Contexto)

Ejemplo de aplicación susceptible de utilizar “flyweights"

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Inmutable

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Interfaz Sólo–Lectura

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

ClaseSinPrivilegio
<<interface>>
SoloLectura

*

*

consigueAtributo()

Mutante
Mutable

*

*

private
consigueAtributo()
fijaAtributo()

Plantilla del patrón de diseño Interfaz Sólo–Lectura

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Método Factoría

Se trata de programar un Constructor Virtual incluido en
un marco de trabajo
El patrón Metodo Factoria deja la responsabilidad de crear
los objetos a las subclases del marco de trabajo
El metodoFactoría está incluido en una clase abstracta
El conocimiento necesario para crear los objetos que se
precisa está encapsulado fuera del marco de trabajo

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Creador

<<interface>>
Producto

metodoFactoria()
unaOperacion()

ProductoConcreto

CreadorConcreto
metodoFactoria()
Plantilla del patrón Método Factoría

M.I.Capel

Tema 1

Nota
...
{
producto= metodoFactoria();
}

Nota
...
{
return new ProductoConcreto();
}
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Una vez que se ha instanciado CreadorConcreto, puede
crear ya el producto concreto sin tener que conocer qué
clase de producto va a crear
Existirá otra jerarquía de clases “helper" que contienen el
conocimiento para crear los productos concretos

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Observador

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Observable
incluirObervador()
notificarObservadores()

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

*
*

ObservableConcreto

<<interface>>
Observador
actualizar()

ObservadorConcreto

Plantilla de patrón de diseño Observador

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Observable

*
*

Pronosticador

<<interface>>
Observador

MonitorTiempo

Los obervadores son notificados cuando cambia el tiempo

Ejemplo con el patrón Observador

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Cuándo utilizar “Prototype"

Un sistema ha de ser independiente de cómo se crean,
componen y representan sus productos
Los objetos se crean en tiempo de ejecución, después de
cargar dinámicamente las clases en la aplicación
Evitando la redundancia de crear una jerarquía de clases
de factorías que se empareje con la jerarquía de productos
Resulta más práctico clonar que instanciar una clase para
crear objetos en las aplicaciones

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Cliente
Operacion()

prototipo

1

1..*

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Prototype
Clonar()

PrototipoConcreto1

PrototipoConcreto2

Clonar()

Clonar()

Diagrama de clases del patrón Prototype

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Para qué utilizar “Prototype"

Para añadir y eliminar productos en tiempo de ejecución
Para definir nuevos objetos sólo cambiando valores
Clonar un prototipo es como instanciar una clase, sólo que
con este patrón se puede ver bastante reducido el número
de clases que necesita un sistema
Para definir nuevos objetos sólo variando la estructura
Para reducir la subclasificación
Para configurar dinámicamente una aplicación con clases

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Proxy

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

<<interface>>
ClassIF

Cliente

*

Proxy

*

ClasePesada
0..1
0..1

Plantilla del patrón de diseño Proxy

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

“Singleton"

Contexto
Problema
Fuerzas
Solución
Ejemplos
Anti–patrones
Patrones Relacionados
Referencias

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Visitante

Para representar a una operación que ha de ser realizada
sobre los elementos de una estructura de objetos
Las aplicaciones crearán objetos VisitanteConcreto y
después atraviesan la estructura de objetos
Al ser visitados los objetos, el visitante llamará al método
adecuado para cada objeto
Se ha de evitar cambiar las clases de los elementos sobre
los que opera

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Cliente

Visitante

VisitanteConcreto1

VisitanteConcreto2

visitarElemConcretoA(...)
visitarElemConcretoB(...)

visitarElemConcretoA(...)
visitarElemConcretoB(...)
Elemento

Estructura

aceptar(Visitante)

ElemConcretoA

ElemConcretoB

aceptar(Visitante v)
operacionA()

aceptar(Visitante v)
operacionB()

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Visitante 2

Los VisitanteConcreto programan cada operación
declarada en Visitante, proporcionan el contexto para
ejecutar la operación y almacenan su estado durante el
recorrido de la estructura
Los objetos del tipo Elemento definen una operación
aceptar() a la que se le pasa un VisitanteConcreto como
argumento
A la operación visitar() hay que pasarle la referencia del
elemento que envía la petición a un VisitanteConcreto

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Patrones Arquitectónicos
Características de estos patrones
Una clasificación [Booch, 2008] atendiendo a características para cumplir con los requisitos de seguridad,
rendimiento, despliegue y almacenamiento
Control de accesos: el acceso a determinadas partes de la
arquitectura software ha de ser controlado rigurosamente.
Concurrencia: diferentes formas de permitir que los
componentes de la aplicación sean concurrentes.
Distribución: la comunicación entre entidades software es
muy diversa y afecta al diseño, la ubicación de los
componentes ha de ser optimizable (configurabilidad).
Persistencia: la supervivencia de los objetos (atributos y
estado) entre distintas ejecuciones es algo diseñable. Una
mala solución puede dañar la eficiencia gravemente
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Categorías
Whole UI ⇒ TopLevelNavigation
Page Layout ⇒ CardStack
Forms and Input ⇒ Fill-in-the-blanks
Tables ⇒ SortableTable
Direct Data Manipulation ⇒ BreadCrumbs
Navigation ⇒ EditInPlace
Searching ⇒ SimpleSearch
Page Elements ⇒ Wizard
E–Commerce ⇒ ShoppingCart
Miscellaneous ⇒ ProgressIndicator

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Patrones de Diseño WebbApp
Dimensiones a considerar para resolver los problemas de diseño
(a) Enfoque con el que diseñamos el patrón
(b) Nivel de granularidad de lo que estamos diseñando
Enfoque de diseño
Patrones de la Arquitectura de Información: estructura de
la información y formas de acceso
Patrones de navegación: estructuras de enlaces
Patrones de interacción: cómo desarrollar interfaces
basándose en el contexto e informando de las
consecuencias
Patrones de presentación: organización interna de
funciones de control para conseguir usabilidad
Patrones funcionales: flujos y algorítmica

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UML
Patrones Arquitectónicos
Patrones a Nivel de Componentes

Granularidad del diseño
El nivel de abstracción distinto según el tamaño del
elemento (aplicación, página, componente, etc.) a diseñar.
Esto afectará al tipo de patrón a utilizar.
Patrones arquitectónicos: definen la estructura global y las
reglas de las relaciones entre elementos
Patrones de diseño: resuelven un problema específico a un
determinado de nivel diseño
Patrones de componentes: aplicables a elementos de
pequeña escala de los componentes o páginas
Patrones de pruebas:aplicables al software desarrollado
específicamente para realizar pruebas

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Conceptos Generales
Objetivo: conseguir componentes y servicios software
“evolutivos"
Definition (Software Evolutivo)
En la medida que incorpore, de manera estable, los cambios en
los requerimientos que pueden aparecer en cualquier momento
del proceso de desarrollo y la vida del sistema software.
Para producir “software evolutivo": una arquitectura que
propicie la facilidad de modificación, la flexibilidad, y la
extensibilidad del software.
Los anteriores atributos de calidad dependen directamente
de la arquitectura software utilizada para desarrollar el
sistema.
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Patrones y Mantenibilidad del Software

Se estudian los patrones de diseño que propician
conseguir el atributo de calidad mantenibilidad del software
Referencia ISO 9126 (ISO/IEC 2002):
Definition (Mantenibilidad del Software)
Facilidad de cambio, Facilidad de análisis, Facilidad de prueba,
y Estabilidad del software
Esta característica de calidad no se limita sólo a la fase del
Mantenimiento: relacionada concepto Evolución software

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Fachada

Definition (–Contexto)
Mejorar la portabilidad de una aplicación al encapsular las
APIs de bajo nivel del sistema operativo
Encapsular mecanismos o servicios proporcionados por
APIs existentes, no orientadas a objeto
Aumentar la cohesión de componentes

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Fachada

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Implicaciones en la calidad del patrón Fachada

Beneficios
Encapsular APIs bajo nivel
Decrementar probabilidad errores
Acceso uniforme a APIs
Aislar de efectos “no portables"
Mejora la configurabilidad
Mejora la comprensión
Clases más cohesivas
Manejo excepciones

Atributo Calidad
Encapsulamiento, cohesión
Integridad
Accesibilidad
Adaptabilidad
Independencia plataforma
Modificabilidad
Reusabilidad
Integridad

M.I.Capel

Tema 1

Característica ISO 9216
Mantenibilidad, cambios
Fiabilidad, madurez
Funcionalidad, adecuación
Portabilidad, adaptabilidad
Adaptabilidad
Cambios y pruebas
Cambios, análisis
Fiabilidad, Tolerancia Fallos
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Implicaciones en la calidad 2
Perjuicios
Perder funcionalidad
Degradar el rendimiento
Limitaciones de integración
Estaticidad del patrón

Atributo Calidad
Accesibilidad
Desempeño
Compatibilidad
Dinamismo

Característica ISO 9216
Funcionalidad, adecuación
Eficiencia, tiempo respuesta
Mantenibilidad
Facilidades

Implementar una abstracción sobre otra pre-existente
puede ocasionar que se pierda funcionalidad
Incrementar el coste en recursos (salvar contextos) si los
métodos de la nueva API incluyen mucha funcionalidad
Problemas de integración de interfaces nativas en los
lenguajes de programación que implementan la nueva API
La reusabilidad de las clases de este patrón, una vez
implementado, es muy limitada
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Resumen Características de calidad
Característica

Sub-característica
Facilidad de cambio

Impacto
+

Facilidad de análisis

+

Mantenibilidad

Funcionalidad
Fiabilidad

Eficiencia
Portabilidad

Facilidad de prueba
Conformidad
con
estándares
Adecuación
Madurez
Tolerancia a Fallas
Tiempo de respuesta
Uso de recursos
Adaptabilidad
M.I.Capel

Tema 1

+
+
+

Atributo
Reusabilidad
Modificabilidad
Encapsulamiento
Cohesión
Dinamismo
Reusabilidad
Modificabilidad
Dinamismo
Modificabilidad
Compatibilidad
Accesibilidad
Accesibilidad
Encapsulamiento
Integridad
Desempeño
Independencia
plataforma

de
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Resumen Características de calidad 2

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Adaptador

Definition (Contexto)
Reutilizar clases existentes cuya interfaz no es adecuada
para lo que necesita la aplicación cliente
Crear clases reutilizables que cooperen con otras clases
Utilizar varias subclases de manera conjunta

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Adaptador

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Implicaciones en la calidad del patrón Adaptador

Beneficios
Coordinación mínima con adaptado
Funcionalidad inclusiva
Múltiples adaptadores

Atributo Calidad
Desempeño
Extensibilidad
Reusabilidad

M.I.Capel

Tema 1

Característica ISO 9216
Eficiencia, tiempo respuesta
Mantenibilidad, facilita cambios
Mantenibilidad, cambios, análisis
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Implicaciones en la calidad 2

Perjuicios
No transparencia adaptador
Mala adaptación de subclases
Invalidar comportamiento adaptado
Trabajo adaptación variable

Atributo Calidad
Complejidad
Modificabilidad
Correctitud
Complejidad

Característica ISO 9216
Manten., cambios,pruebas,análisis
Mantenibilidad, cambios
Funcionalidad, adecuación
Mantenibilidad, cambios

Los adaptadores no son transparentes a todos los clientes
Una clase adaptadora se limita a la adaptación de clase
origen a clases destino
La cantidad de trabajo a realizar para cada adaptador
dependerá del grado de similitud con el adaptado

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Resumen Características de calidad

Característica

Sub-característica
Facilidad de cambio

Impacto
+

Mantenibilidad

Facilidad de prueba
Facilidad de análisis

Eficiencia

Tiempo de respuesta

Funcionalidad

+
+

Adecuación

-

M.I.Capel

Tema 1

Atributo
Extensibilidad
Reusabilidad
Complejidad
Modificabilidad
Complejidad
Reusabilidad
Complejidad
Desempeño
Correctitud
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Resumen Características de calidad 2

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Visitante

Definition (–Contexto)
Estructuras de objetos de muchas clases y con interfaces
diferentes
Ejecutar operaciones distintas y no relacionadas sobre los
objetos de la estructura
Definir nuevas operaciones sobre los objetos

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Visitante

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Implicaciones en la calidad del patrón Visitante

Beneficios
Fácil adición operaciones
Comportamiento centralizado
Visitar objetos independientes
Extensibilidad interfaces visitantes

Atributo Calidad
Modific., extens.
Cohesión
Flexibilidad
Flexibilidad

M.I.Capel

Tema 1

Característica ISO 9216
Manteniblidad, cambios, análisis
Mantenibilidad, cambios, pruebas
Mantenibilidad, cambios
Mantenibilidad, cambios
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Implicaciones en la calidad 2

Perjuicios
Deterioro jerarquía visitantes
Acumulación estados visitados
Compromiso encapsulamiento objetos

Atributo Calidad
cohesión
Modif., complj.
Complej., desempeño

Característica ISO 9216
Manten., cambios, pruebas
Manten., cambios, análisis
Eficiencia, recursos

Cuando se añaden con frecuencia nuevas clases de
elementos concretos, se puede afectar al Visitante
Acumulación de distintos estados en los visitantes como
consecuencia de visitar por diferentes motivos
Acceder al estado interno de los objetos visitados puede
romper su encapsulamiento

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Resumen Características de calidad Visitante
Característica

Sub-característica
Facilidad de cambio

Impacto
+

Mantenibilidad
Facilidad de análisis

+
-

Fiabilidad
Eficiencia

Estabilidad
Facilidad de prueba
Madurez
Uso de recursos

+
-

Funcionalidad

Adecuación

+

M.I.Capel

Tema 1

Atributo
Modificabilidad
Extensibilidad
Flexibilidad
Cohesión
Modificabilidad
Complejidad
Modificabilidad
Extensibilidad
Modificabilidad
Complejidad
Encapsulamiento
Cohesión
Encapsulamiento
Complejidad
Desempeño
Extensibilidad
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Resumen Características de calidad 2

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Cadena de responsabilidad

Definition (–Contexto)
Objetos “manejadores" son asignados dinámicamente
para que atienda peticiones de aplicaciones–cliente
Delegar el atender las peticiones a uno o varios objetos sin
que éstos sean determinados a priori
Inclusión dinámica de objetos–“manejadores"
Patrones relacionados: Composite

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Cadena de responsabilidad

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Implicaciones en la calidad de cadena de
responsabilidad

Beneficios
Simplicar interconexiones objetos
Cambio dinámico responsabilidad
Detección errores fácil
Mejor control peticiones
Escalabilidad de la cadena

Atributo Calidad
Acoplamiento
Modif., flexibilidad
Toler.fallas
Manejo error, precisión
Escalab., modif.

M.I.Capel

Tema 1

Característica ISO 9216
Manten., cambios, análisis
Manten., cambios
Fiabilidad
Fiabilidad
Manten., cambios
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Implicaciones en la calidad 2

Perjuicios
Pérdida peticiones
Funcionalidad por herencia

Atributo Calidad
Adecuación, disponib.
Dinamismo

Característica ISO 9216
Funcion.,fiab.,madurez
Mantenib., cambios

Una petición podría llegar al final de la cadena sin ser
atendida
Para que funcione bien, la cadena ha de estar bien
configurada
El funcionamiento o el comportamiento necesitan de la
herencia para poder ser manejados

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Resumen Características de calidad
Característica

Sub-característica
Facilidad de cambio

Impacto
+

Mantenibilidad

Fiabilidad
Funcionalidad

+
+
+/-

Facilidad de análisis
Madurez
Tolerancia a fallas
Adecuación

M.I.Capel

Tema 1

Atributo
Escalabilidad
Simplicidad
Bajo Acoplamiento
Modificabilidad
Flexibilidad
Dinamismo
Bajo acoplamiento
Disponibilidad
Manejo de errores
Precisión
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Resumen Características de calidad 2

M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Bass, L., Clemens, P., and Kazman, R. (2012).
Software Architecture in Practice.
Addison-Wesley, 3rd edition.
Booch, G. (2008).
Handbook of software architecture.
Addison-Wesley, http:
//www.handbookofsoftwarearchitecture.com/.
Bruegge, B. and Dutoit, A. (2013).
Object–Oriented Software Engineering Using UML,
Patterns and Java.
Prentice-Hall, Upper Saddle River, NJ.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P.,
and Stal, P. (1995).
Pattern-Oriented Software Architecture: a system of
patterns, volume I.
M.I.Capel

Tema 1
Introducción
Análisis y diseño con patrones
Patrones de Diseño y Calidad del Software

Wiley and sons.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J.
(1995).
Design patterns elements of reusable object-oriented
sofware.
Addison-Wesley, Reading, Mass.
Lethbridge, T. and Laganiere, R. (2005).
Object-Oriented Software Engineering: Practical Software
Development Using UML and Java.
McGraw,-Hill.

M.I.Capel

Tema 1

Weitere ähnliche Inhalte

Was ist angesagt?

Modelo, vista, controlador
Modelo, vista, controladorModelo, vista, controlador
Modelo, vista, controladorCecy Villalta
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de softwareJesenia Escobar
 
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Alex Camargo
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de softwareYaskelly Yedra
 
Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Jose Emilio Labra Gayo
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Marta Silvia Tabares
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentesmartin
 
Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General IntroductionAsma CHERIF
 
Estilos y Patrones Aplicables a la Arquitectura de Software
Estilos y Patrones Aplicables a la Arquitectura de SoftwareEstilos y Patrones Aplicables a la Arquitectura de Software
Estilos y Patrones Aplicables a la Arquitectura de SoftwareDiego Plascencia Lara
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de usoTensor
 
Diagramas de uml generacion de codigos
Diagramas de uml generacion de codigosDiagramas de uml generacion de codigos
Diagramas de uml generacion de codigosJesus Rodriguez
 

Was ist angesagt? (20)

Modelo, vista, controlador
Modelo, vista, controladorModelo, vista, controlador
Modelo, vista, controlador
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de software
 
Design patterns
Design patternsDesign patterns
Design patterns
 
PRESENTACIÓN RUP
PRESENTACIÓN RUPPRESENTACIÓN RUP
PRESENTACIÓN RUP
 
Rup (iteraciones)
Rup (iteraciones)Rup (iteraciones)
Rup (iteraciones)
 
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de software
 
Diagrama de secuencia UML
Diagrama de secuencia UMLDiagrama de secuencia UML
Diagrama de secuencia UML
 
Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
1-Unidad 1. Arquitectura de Diseño
1-Unidad 1. Arquitectura de Diseño1-Unidad 1. Arquitectura de Diseño
1-Unidad 1. Arquitectura de Diseño
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2
 
Fun_01_fundamentacion_objetos
Fun_01_fundamentacion_objetosFun_01_fundamentacion_objetos
Fun_01_fundamentacion_objetos
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
 
Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General Introduction
 
Estilos y Patrones Aplicables a la Arquitectura de Software
Estilos y Patrones Aplicables a la Arquitectura de SoftwareEstilos y Patrones Aplicables a la Arquitectura de Software
Estilos y Patrones Aplicables a la Arquitectura de Software
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de uso
 
Diagramas de uml generacion de codigos
Diagramas de uml generacion de codigosDiagramas de uml generacion de codigos
Diagramas de uml generacion de codigos
 

Andere mochten auch

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseñolandeta_p
 
Introducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareIntroducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareYazmin RuBo
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoGermania Rodriguez
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoFYaskelly Yedra
 
Fundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareFundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareRoger Villegas
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Marta Silvia Tabares
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREjose_rob
 
Patrones De DiseñO
Patrones De DiseñOPatrones De DiseñO
Patrones De DiseñOgueste39de6
 
Exposicion de patrón de diseño fachada
Exposicion de patrón de diseño fachadaExposicion de patrón de diseño fachada
Exposicion de patrón de diseño fachadajoseph929
 
Análisis y Diseño OO 2
Análisis y Diseño OO 2Análisis y Diseño OO 2
Análisis y Diseño OO 2Jano González
 
Conceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOAConceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOAAbimael Desales López
 
Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?Abimael Desales López
 
Patrones de diseño en POO
Patrones de diseño en POOPatrones de diseño en POO
Patrones de diseño en POOEl Taller Web
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIjjegonzalezf
 
Patrones de Diseño y Frameworks
Patrones de Diseño y FrameworksPatrones de Diseño y Frameworks
Patrones de Diseño y FrameworksDaniel Cam Urquizo
 

Andere mochten auch (20)

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño
 
Introducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareIntroducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de software
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Patron de Arquitectura Broker
Patron de Arquitectura BrokerPatron de Arquitectura Broker
Patron de Arquitectura Broker
 
Fundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareFundamentos de la arquitectura de software
Fundamentos de la arquitectura de software
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
 
Patrones De DiseñO
Patrones De DiseñOPatrones De DiseñO
Patrones De DiseñO
 
Exposicion de patrón de diseño fachada
Exposicion de patrón de diseño fachadaExposicion de patrón de diseño fachada
Exposicion de patrón de diseño fachada
 
Análisis y Diseño OO 2
Análisis y Diseño OO 2Análisis y Diseño OO 2
Análisis y Diseño OO 2
 
Conceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOAConceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOA
 
Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?
 
Patrones de diseño en POO
Patrones de diseño en POOPatrones de diseño en POO
Patrones de diseño en POO
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Patrones de Diseño y Frameworks
Patrones de Diseño y FrameworksPatrones de Diseño y Frameworks
Patrones de Diseño y Frameworks
 
Orquestación de Servicios y SOA
Orquestación de Servicios y SOAOrquestación de Servicios y SOA
Orquestación de Servicios y SOA
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
Patrones Con C#
Patrones Con C#Patrones Con C#
Patrones Con C#
 

Ähnlich wie Patrones diseño de software

Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoNii Caytuiro
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoNii Caytuiro
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetosjose_rob
 
Características de un programa
Características de un programaCaracterísticas de un programa
Características de un programaDavid Sampedro
 
Capitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webCapitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webgabiar1708
 
presentacion
presentacionpresentacion
presentacionjuanjovez
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetosforwer1223
 
Ingenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareIngenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareJosé Antonio Sandoval Acosta
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareEsteban Espinel
 

Ähnlich wie Patrones diseño de software (20)

PatronesdeDiseño.pptx.pdf
PatronesdeDiseño.pptx.pdfPatronesdeDiseño.pptx.pdf
PatronesdeDiseño.pptx.pdf
 
Clase ii patrones de diseño
Clase ii patrones de diseñoClase ii patrones de diseño
Clase ii patrones de diseño
 
MOD Unidad 1: Fundamentos de modelado
MOD Unidad 1: Fundamentos de modeladoMOD Unidad 1: Fundamentos de modelado
MOD Unidad 1: Fundamentos de modelado
 
Tendencias de Modelado Software
Tendencias de Modelado SoftwareTendencias de Modelado Software
Tendencias de Modelado Software
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
Características de un programa
Características de un programaCaracterísticas de un programa
Características de un programa
 
Tema modeloobjeto-1pp
Tema modeloobjeto-1ppTema modeloobjeto-1pp
Tema modeloobjeto-1pp
 
Capitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webCapitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_web
 
Introducción Patrones de Diseño
Introducción Patrones de DiseñoIntroducción Patrones de Diseño
Introducción Patrones de Diseño
 
presentacion
presentacionpresentacion
presentacion
 
chuy
chuy chuy
chuy
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetos
 
Introduccion a la ingenieria de software
Introduccion a la ingenieria de softwareIntroduccion a la ingenieria de software
Introduccion a la ingenieria de software
 
Ingenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareIngenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de software
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Unidad 3 elaboracion de un proyecto (3)
Unidad  3   elaboracion de un proyecto (3)Unidad  3   elaboracion de un proyecto (3)
Unidad 3 elaboracion de un proyecto (3)
 
Drs u3 a2_fegc
Drs u3 a2_fegcDrs u3 a2_fegc
Drs u3 a2_fegc
 
Patrones de diseño.pptx
Patrones de diseño.pptxPatrones de diseño.pptx
Patrones de diseño.pptx
 

Mehr von Manuel Capel-Tunon

Mehr von Manuel Capel-Tunon (8)

Uml --components simple specification
Uml --components simple specificationUml --components simple specification
Uml --components simple specification
 
Mantenimiento y evolución del software
Mantenimiento y evolución del softwareMantenimiento y evolución del software
Mantenimiento y evolución del software
 
Software Testing (2)
Software Testing (2)Software Testing (2)
Software Testing (2)
 
Software Testing (1)
Software Testing (1)Software Testing (1)
Software Testing (1)
 
Arquitecturas de Software
Arquitecturas de SoftwareArquitecturas de Software
Arquitecturas de Software
 
Presen sew-35-12(beamer)
Presen sew-35-12(beamer)Presen sew-35-12(beamer)
Presen sew-35-12(beamer)
 
Concurrency or "Hard Computing"
Concurrency or "Hard Computing"Concurrency or "Hard Computing"
Concurrency or "Hard Computing"
 
BUSINESS PROCESS MODELLING
BUSINESS PROCESS MODELLINGBUSINESS PROCESS MODELLING
BUSINESS PROCESS MODELLING
 

Kürzlich hochgeladen

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 

Kürzlich hochgeladen (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 

Patrones diseño de software

  • 1. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Desarrollo Utilizando Patrones Software M.I. Capel ETS Ingenierías Informática y Telecommunicación Universidad de Granada Email: manuelcapel@ugr.es Desarrollo de Software Ingeniería de Software (3er curso de Grado) M.I.Capel Tema 1
  • 2. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Índice 1 Introducción Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes 2 Patrones de Diseño y Calidad del Software M.I.Capel Tema 1
  • 3. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Índice 1 Introducción Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes 2 Patrones de Diseño y Calidad del Software M.I.Capel Tema 1
  • 4. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Conceptos básicos y motivación Un patrón permite capturar el conocimiento más importante acerca del diseño de la solución a un problema, que permite su posterior reutilización 1 2 3 Se aplica en un contexto Resuelve un problema Generan indirectamente la solución La idea de patrón procede de la Arquitectura: Chistopher Alexander (Buildings Architect) Each pattern describes a problem that occurs over and over again in our environment and then describes the core of the solution to that problem in such a way that you can use the solution a million times over without ever doing it the same way twice M.I.Capel Tema 1
  • 5. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Marcos de trabajo Para desarrollar un diseño completo de un sistema complejo hay que proporcionar una infraestructura parecida a un esqueleto de la implementación del sistema Los marcos de trabajo no son patrones de diseño: Los patrones de diseño son más abstractos que los marcos de trabajo Los patrones de diseño son elementos arquitectónicos más pequeños que los marcos de trabajo Los patrones de diseño son más especializados que los marcos de trabajo M.I.Capel Tema 1
  • 6. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Definition (Framework) “Reusable minimum architecture that provides the generic structure and behaviour for a family of software abstractions, along with a context . . . that specifies their collaboration and their use within a given domain" M.I.Capel Tema 1
  • 7. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Caracterización Los marcos de trabajo se suelen aplicar sin cambios Proporcionan una estructura de clases para adaptar Son generalmente mucho más grandes arquitectónicamente que los patrones Son más concretos que los patrones M.I.Capel Tema 1
  • 8. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Caracterización II Un patrón de diseño es mucho más que un diagrama de clases en UML Son más abstractos que los marcos de trabajo Los patrones capturan las abstracciones del espacio del problema que son relevantes para encontrar una solución Una “metodología de diseño orientada" a objetos ayuda a obtener una descomposición del sistema M.I.Capel Tema 1
  • 9. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Clasificación basada en su funcionalidad Patrones arquitectónicos: intentan reflejar la estructura de los problemas que resuelven Patrones de datos: relacionados con la organización de la información en aplicaciones Patrones de Diseño Orientado a Objetos:descomposición, intercomunicación y ubicación de los componentes de un sistema dentro de una jerarquía de clasificación Patrones de diseño de interfaces Patrones para aplicaciones Web M.I.Capel Tema 1
  • 10. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Patrones de Diseño Orientado a Objetos Patrones Creacionales: instanciación de objetos reforzando las restricciones en el tipo y número de objetos Patrones Estructurales: organización en integración de clases de objetos dentro de grandes estructuras de información Patrones Comportamentales: asignación de responsabilidades y comunicación entre los objetos M.I.Capel Tema 1
  • 11. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Ámbito de los patrones actuales Segundo criterio de clasificación de los patrones de diseño Las relaciones entre clases y subclases es estática Los patrones que se refieren a objetos tratan de relaciones dinámicas Patrones creacionales de clases vs. de objetos Patrones comportamentales de clases vs. de objetos M.I.Capel Tema 1
  • 12. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Tipos de metodologías de diseño orientadas a objetos Enfocadas hacia la subclasificación Enfocadas hacia las colaboraciones y responsabilidades en el sistema objetivo Enfocada hacia el modelado Los enfoques anteriores son complementarios M.I.Capel Tema 1
  • 13. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Aspectos generales comunes Los patrones de diseño ayudan a determinar qué es un objeto y hasta donde descomponerlos en objetos más simples (granularidad) Determinación de la jerarquía y tipos de clases de objetos Determinación de la interfaces Diferencias entre el mecanismo de herencia de las clases y de las interfaces Definition (Principio de diseño) “Program to an interface not to an implementation" M.I.Capel Tema 1
  • 14. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Descripción de un patrón Contexto Problema Fuerzas Solución Intención Anti-patrones Patrones relacionados Referencias Plantilla describe el entorno en el que se ubica el problema incluyendo el dominio de aplicación una o dos frases que explican lo que se pretende resolver lista el sistema de fuerzas que afectan a la manera en que ha de resolverse el problema incluye las limitaciones y restricciones que han de respetarse proporciona una descripción detallada de la solución propuesta para el problema describe el patrón y lo que hace “soluciones" que no funcionan en el contexto o que son peores; suelen ser errores cometidos por principiantes referencias cruzadas relacionadas con los patrones de diseño reconocimientos a aquellos desarrolladores que desarrollaron o inspiraron el patrón que se propone M.I.Capel Tema 1
  • 15. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Tipos de patrones de diseño Resolución de problemas de diseño utilizando patrones Lenguajes de patrones Modelo de Requisitos Describe el conjunto del problema. Establece el contexto e identifica los intereses que dominan en la búsqueda de un patrón. Se trata de una colección de patrones de diseño que colaboran para resolver los problemas dentro de un dominio de aplicaciones Se ha de definir una arquitectura software o un marco de trabajo Hasta llegar al nivel de patrones de diseño que implican clases y componentes relacionados M.I.Capel Tema 1
  • 16. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Diseño basado en patrones dentro de un contexto Principios Generales de Diseño I II III IV V Descubrir el contexto del problema a partir del modelo de requerimientos Extraer los patrones del nivel actual de abstracción Escoger un esqueleto de implementación que refleje el contexto Trabajar siempre hacia dentro del contexto Refinar el prototipo adaptándolo a las características del software M.I.Capel Tema 1
  • 17. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Catálogos de Patrones de Diseño Existen varios catálogos actualmente: El denominado "The Gang of Four": Gamma–Helm–Johnson-Vlissides [Gamma et al., 1995] Pero no es el único:Coad–North– Mayfield, [Bass et al., 2012], [Booch, 2008], Buschmann [Buschmann et al., 1995], Lethbridge [Lethbridge and Laganiere, 2005], etc. GoF y “Code Complete" (Steve McConnell, Microsoft) son los catálogos de patrones de diseño de referencia M.I.Capel Tema 1
  • 18. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Tareas de diseño Desarrollar una jerarquía de entidades de análisis del problema [Bruegge and Dutoit, 2013] Determinar existencia de un lenguaje de patrones aplicable Determinación de patrones arquitectónicos candidatos Utilizar las colaboraciones entre patrones de más bajo nivel Buscar los patrones de diseño de interfaces adecuados Independientemente del nivel de abstracción, compararlo con otras soluciones pre-existentes M.I.Capel Tema 1
  • 19. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Abstracción–caso Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 20. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Abstracción–caso-2 Titulo Nombre Autor ISBN fechaPublicacion bibliotecaNacional Ejemplar materializacionnumeroCodigodeBarras 1..* Plantilla–ejemplo para el patrón Abstracción-caso M.I.Capel Tema 1
  • 21. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Ejemplar Titulo Nombre Autor ISBN fechaPublicacion bibliotecaNacional Titulo Autor ISBN fechaPublicacion bibliotecaNacional numeroCodigoBarras Viajes Gulliver Mobby Dick Ejemplar numeroCodigoBarras Forma inapropiada de representar abstracciones y casos M.I.Capel Tema 1
  • 22. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Patrones Relacionados El catálogo GoF propone los patrones: Prototype y Flyweight que pueden considerarse como relacionados con Abstracción–Caso El patrón de diseño Prototype: especifica la tipología de los objetos a crear utilizando una clase de prototipo Los nuevos objetos se crean copiando el prototipo El patrón de diseño Flyweight utiliza compartición del estado intrínseco de objetos de granularidad fina para evitar creación masiva de estos objetos en una aplicación M.I.Capel Tema 1
  • 23. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Actor–Papel Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 24. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software interpreta Actor Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes RolAbstracto 1..* Rol-2 Rol-1 Plantilla del patrón Actor–Papel M.I.Capel Tema 1
  • 25. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software SituacionAcademica TiempoParcial asiste 1 Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Alumno DedicacionCompleta acredita 1 Graduado Ejemplo del patrón Actor–Papel M.I.Capel Tema 1 NivelEstudios PreGraduado
  • 26. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Adaptador Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 27. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Superclase metodoPolimorfico() Nota metodoPolimorfico()() { return adaptado.metodoAdaptado(); } Adaptador Adaptado 1 metodoAdaptado() Plantilla del patrón de diseño Adaptador M.I.Capel Tema 1
  • 28. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Figura3D volumen() Toro volumen() { return toroPrev.calcVolumen(); } Toro Esfera ToroPrev 1 Ejemplo con el patrón de diseño Adaptador M.I.Capel Tema 1 calcVolumen()
  • 29. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Composite Se trata de un patrón de diseño para el particionamiento Mediante este patrón, un grupo de objetos es tratado de la misma forma que un solo objeto “Componer" objetos en estructuras en forma de árbol abstracto para representar jerarquías todo–parte Con este tipo de representación las aplicaciones–cliente pueden procesar de manera uniforme los objetos individuales y las composiciones de objetos M.I.Capel Tema 1
  • 30. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Client Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Component Operation() Add(Component) Remove(Component) GetChild(int) children Leaf Composite Operation() Operation() Add(Component) Remove(Component) GetChild(int) Diagrama de clases del patrón Composite M.I.Capel Tema 1
  • 31. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes ¿Cuándo utilizar el patrón “Composite"? Es necesario componer objetos para formar árboles que representen jerarquías Hay que representar (abstractamente) objetos primitivos (leaf) y sus contenedores Los contenedores pueden ser agregados de otros contenedores o de objetos Hay operaciones del contenedor que aplican a todos los descendientes (children) M.I.Capel Tema 1
  • 32. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes ¿Para qué utilizar el patrón “Composite" Para conseguir que los clientes ignoren la diferencia entre objetos individuales y agregaciones de objetos (Composite) Para que los clientes traten a todos los objetos de una agregación de manera uniforme Para hacer más fácil la inclusión de nuevos componentes Para hacer el diseño más general M.I.Capel Tema 1
  • 33. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Componente contiene * Contenedor Panel Etiqueta Boton Ventana Ejemplo utilización patrón Composite M.I.Capel Tema 1 Lista
  • 34. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Delegación Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 35. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Delegante Nota metodoDelegador() { delegado.metodo(); } metodoDelegador() Delegado 1 Plantilla del patrón Delegación M.I.Capel Tema 1 metodo()
  • 36. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Pila ListaEnlazada push() pop() estaVacia() Nota push() { 1 lista.insertaPrimero(); } insertaPrimero() insertaUltimo() insertaDetras() eliminaPrimero() eliminaUltimo() elimina() estaVacia() Ejemplo del patrón de diseño Delegación M.I.Capel Tema 1
  • 37. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Fachada Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 38. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes PackageClase1 1 Fachada * 1 1 PackageClase2 * * Nota Contiene un subconjunto de métodos públicos tal que los otros subsistemas no tendrán que acceder a las clases dentro de los paquetes Plantilla del patrón Fachada M.I.Capel Tema 1 PackageClase3
  • 39. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes VueloRegular 1 LineaAerea * Pasajero 1 encuentraVuelo() hacerReserva() eliminarReserva() * Ejemplo con el patrón de diseño Fachada M.I.Capel Tema 1
  • 40. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Factoría Abstracta Definition (Intención del Patrón) Proporcionar una interfaz para crear familias de objetos relacionados sin tener que especificar las clases a las que pertenecen. Definition Queremos ofrecer una biblioteca de clases de productos pero revelar sólo sus interfaces, no sus implementaciones Definition Queremos imponer que una familia de productos relacionados sean utilizados conjuntamente por las aplicaciones M.I.Capel Tema 1
  • 41. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Factoría Abstracta 2 Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 42. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Plantilla del patrón Factoria Abstracta DemandanteCreacion <<interface>> Factoria 1 crearInstancia() * ClaseGenerica ClaseEspecificaApl FactoriaEspecificaApl crear M.I.Capel Tema 1
  • 43. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Factoría Abstracta Factoría: declara una interfaz para las operaciones de creación de productos abstractos Factoría Específica de la Aplicación: programan las operaciones para crearse objetos–producto concretos Clase Genérica: declara una interfaz para un tipo concreto de objetos–producto Clase Específica de la Aplicación: programa el objeto–producto que va a ser creado por la factoría correspondiente; implementa la interfaz en clase genérica Demandante Creación: sólo usa las interfaces declaradas en ClaseGenerica y Factoria M.I.Capel Tema 1
  • 44. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes ¿Cuándo utilizar “Flyweight" Han de darse todas las condiciones siguientes La aplicación utiliza un número grande de objetos (baja granularidad) Altos costes de almacenamiento debido a la cantidad de objetos La mayoría del estado de un objeto se puede convertir en extrínseco Después de encapsular el estado extrínseco, muchos grupos de objetos pueden ser reemplazados por un número relativamente pequeño de objetos compartidos No se depende de la identidad de los objetos M.I.Capel Tema 1
  • 45. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software FactoriaFlyweight Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Flyweight flyweights Operacion(estadoExtrinseco) FlyweightConcreto FlyweightConcretoNoCompartido estadoIntrinseco Operacion(estadoExtrinseco) todosEstados Operacion(estadoExtrinseco) Cliente Ejemplo del patrón Flyweight M.I.Capel Tema 1
  • 46. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes ¿Para qué utilizar el patrón “Flyweight" Para ahorrar espacio: mayor cuanto más estado intrínseco de los objetos se pueda compartir Para negociar el espacio del estado extrínseco por tiempo de cómputo (si se puede calcular el estado) Para representar estructuras jerárquicas combinado con el patrón Composite Pero, los nodos–hojas representados por “flyweights" no pueden contener un puntero a su nodo superior M.I.Capel Tema 1
  • 47. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes ElementoEscritura Dibujar(Contexto) Intersectar(Punto,Contexto) descend Fila Dibujar(Contexto) Intersectar(Punto,Contexto) descend Caracter char c Dibujar(Contexto) Intersectar(Punto,Contexto) Columna Dibujar(Contexto) Intersectar(Punto,Contexto) Ejemplo de aplicación susceptible de utilizar “flyweights" M.I.Capel Tema 1
  • 48. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Inmutable Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 49. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Interfaz Sólo–Lectura Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 50. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes ClaseSinPrivilegio <<interface>> SoloLectura * * consigueAtributo() Mutante Mutable * * private consigueAtributo() fijaAtributo() Plantilla del patrón de diseño Interfaz Sólo–Lectura M.I.Capel Tema 1
  • 51. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Método Factoría Se trata de programar un Constructor Virtual incluido en un marco de trabajo El patrón Metodo Factoria deja la responsabilidad de crear los objetos a las subclases del marco de trabajo El metodoFactoría está incluido en una clase abstracta El conocimiento necesario para crear los objetos que se precisa está encapsulado fuera del marco de trabajo M.I.Capel Tema 1
  • 52. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Creador <<interface>> Producto metodoFactoria() unaOperacion() ProductoConcreto CreadorConcreto metodoFactoria() Plantilla del patrón Método Factoría M.I.Capel Tema 1 Nota ... { producto= metodoFactoria(); } Nota ... { return new ProductoConcreto(); }
  • 53. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Una vez que se ha instanciado CreadorConcreto, puede crear ya el producto concreto sin tener que conocer qué clase de producto va a crear Existirá otra jerarquía de clases “helper" que contienen el conocimiento para crear los productos concretos M.I.Capel Tema 1
  • 54. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Observador Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 55. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Observable incluirObervador() notificarObservadores() Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes * * ObservableConcreto <<interface>> Observador actualizar() ObservadorConcreto Plantilla de patrón de diseño Observador M.I.Capel Tema 1
  • 56. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Observable * * Pronosticador <<interface>> Observador MonitorTiempo Los obervadores son notificados cuando cambia el tiempo Ejemplo con el patrón Observador M.I.Capel Tema 1
  • 57. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Cuándo utilizar “Prototype" Un sistema ha de ser independiente de cómo se crean, componen y representan sus productos Los objetos se crean en tiempo de ejecución, después de cargar dinámicamente las clases en la aplicación Evitando la redundancia de crear una jerarquía de clases de factorías que se empareje con la jerarquía de productos Resulta más práctico clonar que instanciar una clase para crear objetos en las aplicaciones M.I.Capel Tema 1
  • 58. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Cliente Operacion() prototipo 1 1..* Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Prototype Clonar() PrototipoConcreto1 PrototipoConcreto2 Clonar() Clonar() Diagrama de clases del patrón Prototype M.I.Capel Tema 1
  • 59. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Para qué utilizar “Prototype" Para añadir y eliminar productos en tiempo de ejecución Para definir nuevos objetos sólo cambiando valores Clonar un prototipo es como instanciar una clase, sólo que con este patrón se puede ver bastante reducido el número de clases que necesita un sistema Para definir nuevos objetos sólo variando la estructura Para reducir la subclasificación Para configurar dinámicamente una aplicación con clases M.I.Capel Tema 1
  • 60. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Proxy Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 61. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes <<interface>> ClassIF Cliente * Proxy * ClasePesada 0..1 0..1 Plantilla del patrón de diseño Proxy M.I.Capel Tema 1
  • 62. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes “Singleton" Contexto Problema Fuerzas Solución Ejemplos Anti–patrones Patrones Relacionados Referencias M.I.Capel Tema 1
  • 63. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Visitante Para representar a una operación que ha de ser realizada sobre los elementos de una estructura de objetos Las aplicaciones crearán objetos VisitanteConcreto y después atraviesan la estructura de objetos Al ser visitados los objetos, el visitante llamará al método adecuado para cada objeto Se ha de evitar cambiar las clases de los elementos sobre los que opera M.I.Capel Tema 1
  • 64. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Cliente Visitante VisitanteConcreto1 VisitanteConcreto2 visitarElemConcretoA(...) visitarElemConcretoB(...) visitarElemConcretoA(...) visitarElemConcretoB(...) Elemento Estructura aceptar(Visitante) ElemConcretoA ElemConcretoB aceptar(Visitante v) operacionA() aceptar(Visitante v) operacionB() M.I.Capel Tema 1
  • 65. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Visitante 2 Los VisitanteConcreto programan cada operación declarada en Visitante, proporcionan el contexto para ejecutar la operación y almacenan su estado durante el recorrido de la estructura Los objetos del tipo Elemento definen una operación aceptar() a la que se le pasa un VisitanteConcreto como argumento A la operación visitar() hay que pasarle la referencia del elemento que envía la petición a un VisitanteConcreto M.I.Capel Tema 1
  • 66. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Patrones Arquitectónicos Características de estos patrones Una clasificación [Booch, 2008] atendiendo a características para cumplir con los requisitos de seguridad, rendimiento, despliegue y almacenamiento Control de accesos: el acceso a determinadas partes de la arquitectura software ha de ser controlado rigurosamente. Concurrencia: diferentes formas de permitir que los componentes de la aplicación sean concurrentes. Distribución: la comunicación entre entidades software es muy diversa y afecta al diseño, la ubicación de los componentes ha de ser optimizable (configurabilidad). Persistencia: la supervivencia de los objetos (atributos y estado) entre distintas ejecuciones es algo diseñable. Una mala solución puede dañar la eficiencia gravemente M.I.Capel Tema 1
  • 67. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Categorías Whole UI ⇒ TopLevelNavigation Page Layout ⇒ CardStack Forms and Input ⇒ Fill-in-the-blanks Tables ⇒ SortableTable Direct Data Manipulation ⇒ BreadCrumbs Navigation ⇒ EditInPlace Searching ⇒ SimpleSearch Page Elements ⇒ Wizard E–Commerce ⇒ ShoppingCart Miscellaneous ⇒ ProgressIndicator M.I.Capel Tema 1
  • 68. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Patrones de Diseño WebbApp Dimensiones a considerar para resolver los problemas de diseño (a) Enfoque con el que diseñamos el patrón (b) Nivel de granularidad de lo que estamos diseñando Enfoque de diseño Patrones de la Arquitectura de Información: estructura de la información y formas de acceso Patrones de navegación: estructuras de enlaces Patrones de interacción: cómo desarrollar interfaces basándose en el contexto e informando de las consecuencias Patrones de presentación: organización interna de funciones de control para conseguir usabilidad Patrones funcionales: flujos y algorítmica M.I.Capel Tema 1
  • 69. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Utilización de los patrones de diseño con UML Patrones Arquitectónicos Patrones a Nivel de Componentes Granularidad del diseño El nivel de abstracción distinto según el tamaño del elemento (aplicación, página, componente, etc.) a diseñar. Esto afectará al tipo de patrón a utilizar. Patrones arquitectónicos: definen la estructura global y las reglas de las relaciones entre elementos Patrones de diseño: resuelven un problema específico a un determinado de nivel diseño Patrones de componentes: aplicables a elementos de pequeña escala de los componentes o páginas Patrones de pruebas:aplicables al software desarrollado específicamente para realizar pruebas M.I.Capel Tema 1
  • 70. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Conceptos Generales Objetivo: conseguir componentes y servicios software “evolutivos" Definition (Software Evolutivo) En la medida que incorpore, de manera estable, los cambios en los requerimientos que pueden aparecer en cualquier momento del proceso de desarrollo y la vida del sistema software. Para producir “software evolutivo": una arquitectura que propicie la facilidad de modificación, la flexibilidad, y la extensibilidad del software. Los anteriores atributos de calidad dependen directamente de la arquitectura software utilizada para desarrollar el sistema. M.I.Capel Tema 1
  • 71. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Patrones y Mantenibilidad del Software Se estudian los patrones de diseño que propician conseguir el atributo de calidad mantenibilidad del software Referencia ISO 9126 (ISO/IEC 2002): Definition (Mantenibilidad del Software) Facilidad de cambio, Facilidad de análisis, Facilidad de prueba, y Estabilidad del software Esta característica de calidad no se limita sólo a la fase del Mantenimiento: relacionada concepto Evolución software M.I.Capel Tema 1
  • 72. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Fachada Definition (–Contexto) Mejorar la portabilidad de una aplicación al encapsular las APIs de bajo nivel del sistema operativo Encapsular mecanismos o servicios proporcionados por APIs existentes, no orientadas a objeto Aumentar la cohesión de componentes M.I.Capel Tema 1
  • 73. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Fachada M.I.Capel Tema 1
  • 74. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Implicaciones en la calidad del patrón Fachada Beneficios Encapsular APIs bajo nivel Decrementar probabilidad errores Acceso uniforme a APIs Aislar de efectos “no portables" Mejora la configurabilidad Mejora la comprensión Clases más cohesivas Manejo excepciones Atributo Calidad Encapsulamiento, cohesión Integridad Accesibilidad Adaptabilidad Independencia plataforma Modificabilidad Reusabilidad Integridad M.I.Capel Tema 1 Característica ISO 9216 Mantenibilidad, cambios Fiabilidad, madurez Funcionalidad, adecuación Portabilidad, adaptabilidad Adaptabilidad Cambios y pruebas Cambios, análisis Fiabilidad, Tolerancia Fallos
  • 75. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Implicaciones en la calidad 2 Perjuicios Perder funcionalidad Degradar el rendimiento Limitaciones de integración Estaticidad del patrón Atributo Calidad Accesibilidad Desempeño Compatibilidad Dinamismo Característica ISO 9216 Funcionalidad, adecuación Eficiencia, tiempo respuesta Mantenibilidad Facilidades Implementar una abstracción sobre otra pre-existente puede ocasionar que se pierda funcionalidad Incrementar el coste en recursos (salvar contextos) si los métodos de la nueva API incluyen mucha funcionalidad Problemas de integración de interfaces nativas en los lenguajes de programación que implementan la nueva API La reusabilidad de las clases de este patrón, una vez implementado, es muy limitada M.I.Capel Tema 1
  • 76. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Resumen Características de calidad Característica Sub-característica Facilidad de cambio Impacto + Facilidad de análisis + Mantenibilidad Funcionalidad Fiabilidad Eficiencia Portabilidad Facilidad de prueba Conformidad con estándares Adecuación Madurez Tolerancia a Fallas Tiempo de respuesta Uso de recursos Adaptabilidad M.I.Capel Tema 1 + + + Atributo Reusabilidad Modificabilidad Encapsulamiento Cohesión Dinamismo Reusabilidad Modificabilidad Dinamismo Modificabilidad Compatibilidad Accesibilidad Accesibilidad Encapsulamiento Integridad Desempeño Independencia plataforma de
  • 77. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Resumen Características de calidad 2 M.I.Capel Tema 1
  • 78. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Adaptador Definition (Contexto) Reutilizar clases existentes cuya interfaz no es adecuada para lo que necesita la aplicación cliente Crear clases reutilizables que cooperen con otras clases Utilizar varias subclases de manera conjunta M.I.Capel Tema 1
  • 79. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Adaptador M.I.Capel Tema 1
  • 80. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Implicaciones en la calidad del patrón Adaptador Beneficios Coordinación mínima con adaptado Funcionalidad inclusiva Múltiples adaptadores Atributo Calidad Desempeño Extensibilidad Reusabilidad M.I.Capel Tema 1 Característica ISO 9216 Eficiencia, tiempo respuesta Mantenibilidad, facilita cambios Mantenibilidad, cambios, análisis
  • 81. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Implicaciones en la calidad 2 Perjuicios No transparencia adaptador Mala adaptación de subclases Invalidar comportamiento adaptado Trabajo adaptación variable Atributo Calidad Complejidad Modificabilidad Correctitud Complejidad Característica ISO 9216 Manten., cambios,pruebas,análisis Mantenibilidad, cambios Funcionalidad, adecuación Mantenibilidad, cambios Los adaptadores no son transparentes a todos los clientes Una clase adaptadora se limita a la adaptación de clase origen a clases destino La cantidad de trabajo a realizar para cada adaptador dependerá del grado de similitud con el adaptado M.I.Capel Tema 1
  • 82. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Resumen Características de calidad Característica Sub-característica Facilidad de cambio Impacto + Mantenibilidad Facilidad de prueba Facilidad de análisis Eficiencia Tiempo de respuesta Funcionalidad + + Adecuación - M.I.Capel Tema 1 Atributo Extensibilidad Reusabilidad Complejidad Modificabilidad Complejidad Reusabilidad Complejidad Desempeño Correctitud
  • 83. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Resumen Características de calidad 2 M.I.Capel Tema 1
  • 84. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Visitante Definition (–Contexto) Estructuras de objetos de muchas clases y con interfaces diferentes Ejecutar operaciones distintas y no relacionadas sobre los objetos de la estructura Definir nuevas operaciones sobre los objetos M.I.Capel Tema 1
  • 85. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Visitante M.I.Capel Tema 1
  • 86. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Implicaciones en la calidad del patrón Visitante Beneficios Fácil adición operaciones Comportamiento centralizado Visitar objetos independientes Extensibilidad interfaces visitantes Atributo Calidad Modific., extens. Cohesión Flexibilidad Flexibilidad M.I.Capel Tema 1 Característica ISO 9216 Manteniblidad, cambios, análisis Mantenibilidad, cambios, pruebas Mantenibilidad, cambios Mantenibilidad, cambios
  • 87. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Implicaciones en la calidad 2 Perjuicios Deterioro jerarquía visitantes Acumulación estados visitados Compromiso encapsulamiento objetos Atributo Calidad cohesión Modif., complj. Complej., desempeño Característica ISO 9216 Manten., cambios, pruebas Manten., cambios, análisis Eficiencia, recursos Cuando se añaden con frecuencia nuevas clases de elementos concretos, se puede afectar al Visitante Acumulación de distintos estados en los visitantes como consecuencia de visitar por diferentes motivos Acceder al estado interno de los objetos visitados puede romper su encapsulamiento M.I.Capel Tema 1
  • 88. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Resumen Características de calidad Visitante Característica Sub-característica Facilidad de cambio Impacto + Mantenibilidad Facilidad de análisis + - Fiabilidad Eficiencia Estabilidad Facilidad de prueba Madurez Uso de recursos + - Funcionalidad Adecuación + M.I.Capel Tema 1 Atributo Modificabilidad Extensibilidad Flexibilidad Cohesión Modificabilidad Complejidad Modificabilidad Extensibilidad Modificabilidad Complejidad Encapsulamiento Cohesión Encapsulamiento Complejidad Desempeño Extensibilidad
  • 89. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Resumen Características de calidad 2 M.I.Capel Tema 1
  • 90. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Cadena de responsabilidad Definition (–Contexto) Objetos “manejadores" son asignados dinámicamente para que atienda peticiones de aplicaciones–cliente Delegar el atender las peticiones a uno o varios objetos sin que éstos sean determinados a priori Inclusión dinámica de objetos–“manejadores" Patrones relacionados: Composite M.I.Capel Tema 1
  • 91. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Cadena de responsabilidad M.I.Capel Tema 1
  • 92. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Implicaciones en la calidad de cadena de responsabilidad Beneficios Simplicar interconexiones objetos Cambio dinámico responsabilidad Detección errores fácil Mejor control peticiones Escalabilidad de la cadena Atributo Calidad Acoplamiento Modif., flexibilidad Toler.fallas Manejo error, precisión Escalab., modif. M.I.Capel Tema 1 Característica ISO 9216 Manten., cambios, análisis Manten., cambios Fiabilidad Fiabilidad Manten., cambios
  • 93. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Implicaciones en la calidad 2 Perjuicios Pérdida peticiones Funcionalidad por herencia Atributo Calidad Adecuación, disponib. Dinamismo Característica ISO 9216 Funcion.,fiab.,madurez Mantenib., cambios Una petición podría llegar al final de la cadena sin ser atendida Para que funcione bien, la cadena ha de estar bien configurada El funcionamiento o el comportamiento necesitan de la herencia para poder ser manejados M.I.Capel Tema 1
  • 94. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Resumen Características de calidad Característica Sub-característica Facilidad de cambio Impacto + Mantenibilidad Fiabilidad Funcionalidad + + +/- Facilidad de análisis Madurez Tolerancia a fallas Adecuación M.I.Capel Tema 1 Atributo Escalabilidad Simplicidad Bajo Acoplamiento Modificabilidad Flexibilidad Dinamismo Bajo acoplamiento Disponibilidad Manejo de errores Precisión
  • 95. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Resumen Características de calidad 2 M.I.Capel Tema 1
  • 96. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Bass, L., Clemens, P., and Kazman, R. (2012). Software Architecture in Practice. Addison-Wesley, 3rd edition. Booch, G. (2008). Handbook of software architecture. Addison-Wesley, http: //www.handbookofsoftwarearchitecture.com/. Bruegge, B. and Dutoit, A. (2013). Object–Oriented Software Engineering Using UML, Patterns and Java. Prentice-Hall, Upper Saddle River, NJ. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, P. (1995). Pattern-Oriented Software Architecture: a system of patterns, volume I. M.I.Capel Tema 1
  • 97. Introducción Análisis y diseño con patrones Patrones de Diseño y Calidad del Software Wiley and sons. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995). Design patterns elements of reusable object-oriented sofware. Addison-Wesley, Reading, Mass. Lethbridge, T. and Laganiere, R. (2005). Object-Oriented Software Engineering: Practical Software Development Using UML and Java. McGraw,-Hill. M.I.Capel Tema 1