Patrones diseño de software

97
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: [email protected] Desarrollo de Software Ingeniería de Software (3er curso de Grado) M.I.Capel Tema 1

description

Revisión de patrones para la asignatura "Desarrollo de Software" de 3º del Grado de Informática (Univ. Granada)

Transcript of Patrones diseño de software

Page 1: Patrones diseño de software

IntroducciónAná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áticay Telecommunicación

Universidad de GranadaEmail: [email protected]

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

M.I.Capel Tema 1

Page 2: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Índice

1 IntroducciónTipos de patrones de diseñoResolución de problemas de diseño utilizando patronesUtilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

2 Patrones de Diseño y Calidad del Software

M.I.Capel Tema 1

Page 3: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Índice

1 IntroducciónTipos de patrones de diseñoResolución de problemas de diseño utilizando patronesUtilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

2 Patrones de Diseño y Calidad del Software

M.I.Capel Tema 1

Page 4: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Conceptos básicos y motivación

Un patrón permite capturar el conocimiento másimportante acerca del diseño de la solución a unproblema, que permite su posterior reutilización

1 Se aplica en un contexto2 Resuelve un problema3 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 againin our environment and then describes the core of the solution tothat problem in such a way that you can use the solution a milliontimes over without ever doing it the same way twice

M.I.Capel Tema 1

Page 5: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Marcos de trabajo

Para desarrollar un diseño completo de un sistemacomplejo hay que proporcionar una infraestructuraparecida a un esqueleto de la implementación del sistemaLos marcos de trabajo no son patrones de diseño:

Los patrones de diseño son más abstractos que los marcosde trabajoLos patrones de diseño son elementos arquitectónicos máspequeños que los marcos de trabajoLos patrones de diseño son más especializados que losmarcos de trabajo

M.I.Capel Tema 1

Page 6: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

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

M.I.Capel Tema 1

Page 7: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Caracterización

Los marcos de trabajo se suelen aplicar sin cambiosProporcionan una estructura de clases para adaptarSon generalmente mucho más grandesarquitectónicamente que los patronesSon más concretos que los patrones

M.I.Capel Tema 1

Page 8: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Caracterización II

Un patrón de diseño es mucho más que un diagrama declases en UMLSon más abstractos que los marcos de trabajoLos patrones capturan las abstracciones del espacio delproblema que son relevantes para encontrar una soluciónUna “metodología de diseño orientada" a objetos ayuda aobtener una descomposición del sistema

M.I.Capel Tema 1

Page 9: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Clasificación basada en su funcionalidad

Patrones arquitectónicos: intentan reflejar la estructura delos problemas que resuelvenPatrones de datos: relacionados con la organización de lainformación en aplicacionesPatrones de Diseño Orientado a Objetos:descomposición,intercomunicación y ubicación de los componentes de unsistema dentro de una jerarquía de clasificaciónPatrones de diseño de interfacesPatrones para aplicaciones Web

M.I.Capel Tema 1

Page 10: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Patrones de Diseño Orientado a Objetos

Patrones Creacionales: instanciación de objetosreforzando las restricciones en el tipo y número de objetosPatrones Estructurales: organización en integración declases de objetos dentro de grandes estructuras deinformaciónPatrones Comportamentales: asignación deresponsabilidades y comunicación entre los objetos

M.I.Capel Tema 1

Page 11: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Ámbito de los patrones actuales

Segundo criterio de clasificación de los patrones de diseñoLas relaciones entre clases y subclases es estáticaLos patrones que se refieren a objetos tratan de relacionesdinámicas

Patrones creacionales de clases vs. de objetosPatrones comportamentales de clases vs. de objetos

M.I.Capel Tema 1

Page 12: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

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

Enfocadas hacia la subclasificaciónEnfocadas hacia las colaboraciones y responsabilidadesen el sistema objetivoEnfocada hacia el modeladoLos enfoques anteriores son complementarios

M.I.Capel Tema 1

Page 13: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Aspectos generales comunes

Los patrones de diseño ayudan a determinarqué es un objeto y hasta donde descomponerlos enobjetos más simples (granularidad)Determinación de la jerarquía y tipos de clases de objetosDeterminación de la interfacesDiferencias entre el mecanismo de herencia de las clasesy de las interfaces

Definition (Principio de diseño)“Program to an interface not to an implementation"

M.I.Capel Tema 1

Page 14: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Descripción de un patrónPlantilla

Contexto describe el entorno en el que seubica el problema incluyendo el

dominio de aplicación

Problema una o dos frases que explican lo quese pretende resolver

Fuerzaslista el sistema de fuerzas que afectan a la

manera en que ha de resolverse el problemaincluye las limitaciones y restricciones

que han de respetarse

Solución proporciona una descripción detalladade la solución propuesta para el problema

Intención describe el patrón y lo que hace

Anti-patrones“soluciones" que no funcionan en el contexto

o que son peores; suelen ser errorescometidos por principiantes

Patrones relacionados referencias cruzadas relacionadascon los patrones de diseño

Referencias reconocimientos a aquellos desarrolladoresque desarrollaron o inspiraron el patrón que se propone

M.I.Capel Tema 1

Page 15: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

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

Lenguajes de patrones

Modelo de RequisitosDescribe el conjunto del problema.Establece el contexto e identificalos intereses que dominan en labúsqueda de un patrón.

Se trata de una colección de patrones de diseño quecolaboran para resolver los problemas dentro de undominio de aplicacionesSe ha de definir una arquitectura software o un marco detrabajoHasta llegar al nivel de patrones de diseño que implicanclases y componentes relacionados

M.I.Capel Tema 1

Page 16: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Diseño basado en patrones dentro de un contexto

Principios Generales de DiseñoI Descubrir el contexto del problema a partir del modelo de

requerimientosII Extraer los patrones del nivel actual de abstracciónIII Escoger un esqueleto de implementación que refleje el

contextoIV Trabajar siempre hacia dentro del contextoV Refinar el prototipo adaptándolo a las características del

software

M.I.Capel Tema 1

Page 17: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones 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) sonlos catálogos de patrones de diseño de referencia

M.I.Capel Tema 1

Page 18: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Tareas de diseño

Desarrollar una jerarquía de entidades de análisis delproblema [Bruegge and Dutoit, 2013]Determinar existencia de un lenguaje de patrones aplicableDeterminación de patrones arquitectónicos candidatosUtilizar las colaboraciones entre patrones de más bajo nivelBuscar los patrones de diseño de interfaces adecuadosIndependientemente del nivel de abstracción, compararlo conotras soluciones pre-existentes

M.I.Capel Tema 1

Page 19: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Abstracción–caso

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 20: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Abstracción–caso-2

TituloNombreAutorISBNfechaPublicacionbibliotecaNacional

Ejemplar

numeroCodigodeBarrasmaterializacion

1..*

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

M.I.Capel Tema 1

Page 21: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Ejemplar

TituloAutorISBNfechaPublicacionbibliotecaNacionalnumeroCodigoBarras

Viajes Gulliver Mobby Dick

TituloNombreAutorISBNfechaPublicacionbibliotecaNacional

Ejemplar

numeroCodigoBarras

Forma inapropiada de representar abstracciones y casos

M.I.Capel Tema 1

Page 22: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Patrones Relacionados

El catálogo GoF propone los patrones: Prototype yFlyweight que pueden considerarse como relacionadoscon Abstracción–CasoEl patrón de diseño Prototype: especifica la tipología delos objetos a crear utilizando una clase de prototipoLos nuevos objetos se crean copiando el prototipoEl patrón de diseño Flyweight utiliza compartición delestado intrínseco de objetos de granularidad fina paraevitar creación masiva de estos objetos en una aplicación

M.I.Capel Tema 1

Page 23: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Actor–Papel

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 24: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Actor RolAbstracto

Rol-2 Rol-1

interpreta

1..*

Plantilla del patrón Actor–Papel

M.I.Capel Tema 1

Page 25: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

SituacionAcademica Alumno

DedicacionCompletaTiempoParcial

NivelEstudios

Graduado PreGraduado

asiste1

acredita1

Ejemplo del patrón Actor–Papel

M.I.Capel Tema 1

Page 26: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Adaptador

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 27: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Superclase

metodoPolimorfico()

Adaptador Adaptado

metodoAdaptado()1

NotametodoPolimorfico()(){

returnadaptado.metodoAdaptado();

}

Plantilla del patrón de diseño Adaptador

M.I.Capel Tema 1

Page 28: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Figura3D

volumen()

Esfera Toro ToroPrev

calcVolumen()1

Torovolumen(){

returntoroPrev.calcVolumen();

}

Ejemplo con el patrón de diseño Adaptador

M.I.Capel Tema 1

Page 29: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Composite

Se trata de un patrón de diseño para el particionamientoMediante este patrón, un grupo de objetos es tratado de lamisma forma que un solo objeto“Componer" objetos en estructuras en forma de árbolabstracto para representar jerarquías todo–parteCon este tipo de representación las aplicaciones–clientepueden procesar de manera uniforme los objetosindividuales y las composiciones de objetos

M.I.Capel Tema 1

Page 30: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Component

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

Leaf

Operation()

Composite

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

Client

children

Diagrama de clases del patrón Composite

M.I.Capel Tema 1

Page 31: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

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

Es necesario componer objetos para formar árboles querepresenten jerarquíasHay que representar (abstractamente) objetos primitivos(leaf) y sus contenedoresLos contenedores pueden ser agregados de otroscontenedores o de objetosHay operaciones del contenedor que aplican a todos losdescendientes (children)

M.I.Capel Tema 1

Page 32: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

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

Para conseguir que los clientes ignoren la diferencia entreobjetos individuales y agregaciones de objetos(Composite)Para que los clientes traten a todos los objetos de unaagregación de manera uniformePara hacer más fácil la inclusión de nuevos componentesPara hacer el diseño más general

M.I.Capel Tema 1

Page 33: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Componente

ListaBotonEtiquetaContenedor

Panel Ventana

contiene*

Ejemplo utilización patrón Composite

M.I.Capel Tema 1

Page 34: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Delegación

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 35: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Delegante

metodoDelegador()

Delegado

metodo()1Nota

metodoDelegador(){

delegado.metodo();}

Plantilla del patrón Delegación

M.I.Capel Tema 1

Page 36: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Pila

push()pop()estaVacia()

ListaEnlazada

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

1Nota

push(){

lista.insertaPrimero();}

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

M.I.Capel Tema 1

Page 37: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Fachada

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 38: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Fachada

PackageClase1

PackageClase2

PackageClase3

*1

*

1

*

1

NotaContiene un subconjunto demétodos públicos tal quelos otros subsistemas notendrán que acceder a lasclases dentro de los paquetes

Plantilla del patrón Fachada

M.I.Capel Tema 1

Page 39: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

LineaAerea

encuentraVuelo()hacerReserva()eliminarReserva()

VueloRegular

Pasajero*1

*1

Ejemplo con el patrón de diseño Fachada

M.I.Capel Tema 1

Page 40: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Factoría Abstracta

Definition (Intención del Patrón)Proporcionar una interfaz para crear familias de objetosrelacionados sin tener que especificar las clases a las quepertenecen.

DefinitionQueremos ofrecer una biblioteca de clases de productos perorevelar sólo sus interfaces, no sus implementaciones

DefinitionQueremos imponer que una familia de productos relacionadossean utilizados conjuntamente por las aplicaciones

M.I.Capel Tema 1

Page 41: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Factoría Abstracta 2

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 42: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Plantilla del patrón Factoria Abstracta

DemandanteCreacion <<interface>>Factoria

crearInstancia()

ClaseGenerica

ClaseEspecificaApl FactoriaEspecificaApl

*

crear

1

M.I.Capel Tema 1

Page 43: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Factoría Abstracta

Factoría: declara una interfaz para las operaciones decreación de productos abstractosFactoría Específica de la Aplicación: programan lasoperaciones para crearse objetos–producto concretosClase Genérica: declara una interfaz para un tipo concretode objetos–productoClase Específica de la Aplicación: programa elobjeto–producto que va a ser creado por la factoríacorrespondiente; implementa la interfaz en clase genéricaDemandante Creación: sólo usa las interfaces declaradasen ClaseGenerica y Factoria

M.I.Capel Tema 1

Page 44: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

¿Cuándo utilizar “Flyweight"

Han de darse todas las condiciones siguientesLa aplicación utiliza un número grande de objetos (bajagranularidad)Altos costes de almacenamiento debido a la cantidad deobjetosLa mayoría del estado de un objeto se puede convertir enextrínsecoDespués de encapsular el estado extrínseco, muchosgrupos de objetos pueden ser reemplazados por unnúmero relativamente pequeño de objetos compartidosNo se depende de la identidad de los objetos

M.I.Capel Tema 1

Page 45: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

FactoriaFlyweight Flyweight

Operacion(estadoExtrinseco)

flyweights

FlyweightConcreto

estadoIntrinsecoOperacion(estadoExtrinseco)

FlyweightConcretoNoCompartido

todosEstadosOperacion(estadoExtrinseco)

Cliente

Ejemplo del patrón Flyweight

M.I.Capel Tema 1

Page 46: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

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

Para ahorrar espacio: mayor cuanto más estado intrínsecode los objetos se pueda compartirPara negociar el espacio del estado extrínseco por tiempode cómputo (si se puede calcular el estado)Para representar estructuras jerárquicas combinado con elpatrón CompositePero, los nodos–hojas representados por “flyweights" nopueden contener un puntero a su nodo superior

M.I.Capel Tema 1

Page 47: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

ElementoEscritura

Dibujar(Contexto)Intersectar(Punto,Contexto)

Fila

Dibujar(Contexto)Intersectar(Punto,Contexto)

Caracterchar cDibujar(Contexto)Intersectar(Punto,Contexto)

Columna

Dibujar(Contexto)Intersectar(Punto,Contexto)

descend descend

Ejemplo de aplicación susceptible de utilizar “flyweights"

M.I.Capel Tema 1

Page 48: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Inmutable

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 49: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Interfaz Sólo–Lectura

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 50: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

<<interface>>SoloLectura

consigueAtributo()

ClaseSinPrivilegio

Mutableprivate

consigueAtributo()fijaAtributo()

Mutante

**

**

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

M.I.Capel Tema 1

Page 51: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Método Factoría

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

M.I.Capel Tema 1

Page 52: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Nota. . .{

producto= metodoFactoria();}

Nota. . .{

return new ProductoConcreto();}

<<interface>>Producto

ProductoConcreto

Creador

metodoFactoria()unaOperacion()

CreadorConcreto

metodoFactoria()

Plantilla del patrón Método Factoría

M.I.Capel Tema 1

Page 53: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

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

M.I.Capel Tema 1

Page 54: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Observador

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 55: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

ObservableincluirObervador()notificarObservadores()

<<interface>>Observador

actualizar()

ObservableConcreto ObservadorConcreto

**

Plantilla de patrón de diseño Observador

M.I.Capel Tema 1

Page 56: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Observable <<interface>>Observador

Pronosticador MonitorTiempo

**

Los obervadores son notificados cuando cambia el tiempo

Ejemplo con el patrón Observador

M.I.Capel Tema 1

Page 57: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Cuándo utilizar “Prototype"

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

M.I.Capel Tema 1

Page 58: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Cliente

Operacion()

Prototype

Clonar()

PrototipoConcreto1

Clonar()

PrototipoConcreto2

Clonar()

prototipo

1..*1

Diagrama de clases del patrón Prototype

M.I.Capel Tema 1

Page 59: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Para qué utilizar “Prototype"

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

M.I.Capel Tema 1

Page 60: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Proxy

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 61: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

<<interface>>ClassIF

Cliente Proxy ClasePesada**

0..10..1

Plantilla del patrón de diseño Proxy

M.I.Capel Tema 1

Page 62: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

“Singleton"

ContextoProblemaFuerzasSoluciónEjemplosAnti–patronesPatrones RelacionadosReferencias

M.I.Capel Tema 1

Page 63: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Visitante

Para representar a una operación que ha de ser realizadasobre los elementos de una estructura de objetosLas aplicaciones crearán objetos VisitanteConcreto ydespués atraviesan la estructura de objetosAl ser visitados los objetos, el visitante llamará al métodoadecuado para cada objetoSe ha de evitar cambiar las clases de los elementos sobrelos que opera

M.I.Capel Tema 1

Page 64: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Cliente Visitante

VisitanteConcreto1

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

VisitanteConcreto2

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

EstructuraElemento

aceptar(Visitante)

ElemConcretoA

aceptar(Visitante v)operacionA()

ElemConcretoB

aceptar(Visitante v)operacionB()

M.I.Capel Tema 1

Page 65: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Visitante 2

Los VisitanteConcreto programan cada operacióndeclarada en Visitante, proporcionan el contexto paraejecutar la operación y almacenan su estado durante elrecorrido de la estructuraLos objetos del tipo Elemento definen una operaciónaceptar() a la que se le pasa un VisitanteConcreto comoargumentoA la operación visitar() hay que pasarle la referencia delelemento que envía la petición a un VisitanteConcreto

M.I.Capel Tema 1

Page 66: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Patrones ArquitectónicosCaracterísticas de estos patrones

Una clasificación [Booch, 2008] atendiendo a caracterís-ticas para cumplir con los requisitos de seguridad,rendimiento, despliegue y almacenamiento

Control de accesos: el acceso a determinadas partes de laarquitectura software ha de ser controlado rigurosamente.Concurrencia: diferentes formas de permitir que loscomponentes de la aplicación sean concurrentes.Distribución: la comunicación entre entidades software esmuy diversa y afecta al diseño, la ubicación de loscomponentes ha de ser optimizable (configurabilidad).Persistencia: la supervivencia de los objetos (atributos yestado) entre distintas ejecuciones es algo diseñable. Unamala solución puede dañar la eficiencia gravemente

M.I.Capel Tema 1

Page 67: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Categorías

Whole UI ⇒ TopLevelNavigationPage Layout ⇒ CardStackForms and Input ⇒ Fill-in-the-blanksTables ⇒ SortableTableDirect Data Manipulation ⇒ BreadCrumbsNavigation ⇒ EditInPlaceSearching ⇒ SimpleSearchPage Elements ⇒ WizardE–Commerce ⇒ ShoppingCartMiscellaneous ⇒ ProgressIndicator

M.I.Capel Tema 1

Page 68: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones 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ñoPatrones de la Arquitectura de Información: estructura dela información y formas de accesoPatrones de navegación: estructuras de enlacesPatrones de interacción: cómo desarrollar interfacesbasándose en el contexto e informando de lasconsecuenciasPatrones de presentación: organización interna defunciones de control para conseguir usabilidadPatrones funcionales: flujos y algorítmica

M.I.Capel Tema 1

Page 69: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Utilización de los patrones de diseño con UMLPatrones ArquitectónicosPatrones a Nivel de Componentes

Granularidad del diseñoEl nivel de abstracción distinto según el tamaño delelemento (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 lasreglas de las relaciones entre elementosPatrones de diseño: resuelven un problema específico a undeterminado de nivel diseñoPatrones de componentes: aplicables a elementos depequeña escala de los componentes o páginasPatrones de pruebas:aplicables al software desarrolladoespecíficamente para realizar pruebas

M.I.Capel Tema 1

Page 70: Patrones diseño de software

IntroducciónAná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 enlos requerimientos que pueden aparecer en cualquier momentodel proceso de desarrollo y la vida del sistema software.

Para producir “software evolutivo": una arquitectura quepropicie la facilidad de modificación, la flexibilidad, y laextensibilidad del software.Los anteriores atributos de calidad dependen directamentede la arquitectura software utilizada para desarrollar elsistema.

M.I.Capel Tema 1

Page 71: Patrones diseño de software

IntroducciónAná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 propicianconseguir el atributo de calidad mantenibilidad del softwareReferencia 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 delMantenimiento: relacionada concepto Evolución software

M.I.Capel Tema 1

Page 72: Patrones diseño de software

IntroducciónAná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 lasAPIs de bajo nivel del sistema operativoEncapsular mecanismos o servicios proporcionados porAPIs existentes, no orientadas a objetoAumentar la cohesión de componentes

M.I.Capel Tema 1

Page 73: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Fachada

M.I.Capel Tema 1

Page 74: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Implicaciones en la calidad del patrón Fachada

Beneficios Atributo Calidad Característica ISO 9216Encapsular APIs bajo nivel Encapsulamiento, cohesión Mantenibilidad, cambiosDecrementar probabilidad errores Integridad Fiabilidad, madurezAcceso uniforme a APIs Accesibilidad Funcionalidad, adecuaciónAislar de efectos “no portables" Adaptabilidad Portabilidad, adaptabilidadMejora la configurabilidad Independencia plataforma AdaptabilidadMejora la comprensión Modificabilidad Cambios y pruebasClases más cohesivas Reusabilidad Cambios, análisisManejo excepciones Integridad Fiabilidad, Tolerancia Fallos

M.I.Capel Tema 1

Page 75: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Implicaciones en la calidad 2

Perjuicios Atributo Calidad Característica ISO 9216Perder funcionalidad Accesibilidad Funcionalidad, adecuaciónDegradar el rendimiento Desempeño Eficiencia, tiempo respuestaLimitaciones de integración Compatibilidad MantenibilidadEstaticidad del patrón Dinamismo Facilidades

Implementar una abstracción sobre otra pre-existentepuede ocasionar que se pierda funcionalidadIncrementar el coste en recursos (salvar contextos) si losmétodos de la nueva API incluyen mucha funcionalidadProblemas de integración de interfaces nativas en loslenguajes de programación que implementan la nueva APILa reusabilidad de las clases de este patrón, una vezimplementado, es muy limitada

M.I.Capel Tema 1

Page 76: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Resumen Características de calidad

Característica Sub-característica Impacto Atributo

Mantenibilidad

Facilidad de cambio + Reusabilidad Modificabilidad Encapsulamiento Cohesión

- Dinamismo

Facilidad de análisis + Reusabilidad Modificabilidad

- Dinamismo

Facilidad de prueba + Modificabilidad

Conformidad con estándares

- Compatibilidad

Funcionalidad Adecuación - Accesibilidad

Fiabilidad Madurez +

Accesibilidad Encapsulamiento Integridad

Tolerancia a Fallas

Eficiencia Tiempo de respuesta Uso de recursos

- Desempeño

Portabilidad Adaptabilidad + Independencia de plataforma

M.I.Capel Tema 1

Page 77: Patrones diseño de software

IntroducciónAná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

Page 78: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Adaptador

Definition (Contexto)Reutilizar clases existentes cuya interfaz no es adecuadapara lo que necesita la aplicación clienteCrear clases reutilizables que cooperen con otras clasesUtilizar varias subclases de manera conjunta

M.I.Capel Tema 1

Page 79: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Adaptador

M.I.Capel Tema 1

Page 80: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Implicaciones en la calidad del patrón Adaptador

Beneficios Atributo Calidad Característica ISO 9216Coordinación mínima con adaptado Desempeño Eficiencia, tiempo respuestaFuncionalidad inclusiva Extensibilidad Mantenibilidad, facilita cambiosMúltiples adaptadores Reusabilidad Mantenibilidad, cambios, análisis

M.I.Capel Tema 1

Page 81: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Implicaciones en la calidad 2

Perjuicios Atributo Calidad Característica ISO 9216No transparencia adaptador Complejidad Manten., cambios,pruebas,análisisMala adaptación de subclases Modificabilidad Mantenibilidad, cambiosInvalidar comportamiento adaptado Correctitud Funcionalidad, adecuaciónTrabajo adaptación variable Complejidad Mantenibilidad, cambios

Los adaptadores no son transparentes a todos los clientesUna clase adaptadora se limita a la adaptación de claseorigen a clases destinoLa cantidad de trabajo a realizar para cada adaptadordependerá del grado de similitud con el adaptado

M.I.Capel Tema 1

Page 82: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Resumen Características de calidad

Característica Sub-característica Impacto Atributo

Mantenibilidad

Facilidad de cambio + Extensibilidad Reusabilidad

- Complejidad Modificabilidad

Facilidad de prueba - Complejidad

Facilidad de análisis + Reusabilidad

- Complejidad

Eficiencia Tiempo de respuesta + Desempeño

Funcionalidad Adecuación - Correctitud

M.I.Capel Tema 1

Page 83: Patrones diseño de software

IntroducciónAná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

Page 84: Patrones diseño de software

IntroducciónAná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 interfacesdiferentesEjecutar operaciones distintas y no relacionadas sobre losobjetos de la estructuraDefinir nuevas operaciones sobre los objetos

M.I.Capel Tema 1

Page 85: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Visitante

M.I.Capel Tema 1

Page 86: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Implicaciones en la calidad del patrón Visitante

Beneficios Atributo Calidad Característica ISO 9216Fácil adición operaciones Modific., extens. Manteniblidad, cambios, análisisComportamiento centralizado Cohesión Mantenibilidad, cambios, pruebasVisitar objetos independientes Flexibilidad Mantenibilidad, cambiosExtensibilidad interfaces visitantes Flexibilidad Mantenibilidad, cambios

M.I.Capel Tema 1

Page 87: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Implicaciones en la calidad 2

Perjuicios Atributo Calidad Característica ISO 9216Deterioro jerarquía visitantes cohesión Manten., cambios, pruebasAcumulación estados visitados Modif., complj. Manten., cambios, análisisCompromiso encapsulamiento objetos Complej., desempeño Eficiencia, recursos

Cuando se añaden con frecuencia nuevas clases deelementos concretos, se puede afectar al VisitanteAcumulación de distintos estados en los visitantes comoconsecuencia de visitar por diferentes motivosAcceder al estado interno de los objetos visitados puederomper su encapsulamiento

M.I.Capel Tema 1

Page 88: Patrones diseño de software

IntroducciónAná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 Impacto Atributo

Mantenibilidad

Facilidad de cambio + Modificabilidad Extensibilidad Flexibilidad Cohesión

- Modificabilidad Complejidad

Facilidad de análisis + Modificabilidad Extensibilidad

- Modificabilidad Complejidad

Estabilidad - Encapsulamiento

Facilidad de prueba + Cohesión

Fiabilidad Madurez - Encapsulamiento

Eficiencia Uso de recursos - Complejidad Desempeño

Funcionalidad Adecuación + Extensibilidad

M.I.Capel Tema 1

Page 89: Patrones diseño de software

IntroducciónAná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

Page 90: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Cadena de responsabilidad

Definition (–Contexto)Objetos “manejadores" son asignados dinámicamentepara que atienda peticiones de aplicaciones–clienteDelegar el atender las peticiones a uno o varios objetos sinque éstos sean determinados a prioriInclusión dinámica de objetos–“manejadores"Patrones relacionados: Composite

M.I.Capel Tema 1

Page 91: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Cadena de responsabilidad

M.I.Capel Tema 1

Page 92: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Implicaciones en la calidad de cadena deresponsabilidad

Beneficios Atributo Calidad Característica ISO 9216Simplicar interconexiones objetos Acoplamiento Manten., cambios, análisisCambio dinámico responsabilidad Modif., flexibilidad Manten., cambiosDetección errores fácil Toler.fallas FiabilidadMejor control peticiones Manejo error, precisión FiabilidadEscalabilidad de la cadena Escalab., modif. Manten., cambios

M.I.Capel Tema 1

Page 93: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Implicaciones en la calidad 2

Perjuicios Atributo Calidad Característica ISO 9216Pérdida peticiones Adecuación, disponib. Funcion.,fiab.,madurezFuncionalidad por herencia Dinamismo Mantenib., cambios

Una petición podría llegar al final de la cadena sin seratendidaPara que funcione bien, la cadena ha de estar bienconfiguradaEl funcionamiento o el comportamiento necesitan de laherencia para poder ser manejados

M.I.Capel Tema 1

Page 94: Patrones diseño de software

IntroducciónAnálisis y diseño con patrones

Patrones de Diseño y Calidad del Software

Resumen Características de calidad

Característica Sub-característica Impacto Atributo

Mantenibilidad

Facilidad de cambio + Escalabilidad Simplicidad Bajo Acoplamiento Modificabilidad Flexibilidad

- Dinamismo

Facilidad de análisis + Bajo acoplamiento

Fiabilidad Madurez - Disponibilidad

Tolerancia a fallas + Manejo de errores

Funcionalidad Adecuación +/- Precisión

M.I.Capel Tema 1

Page 95: Patrones diseño de software

IntroducciónAná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

Page 96: Patrones diseño de software

IntroducciónAná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 ofpatterns, volume I.

M.I.Capel Tema 1

Page 97: Patrones diseño de software

IntroducciónAná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-orientedsofware.Addison-Wesley, Reading, Mass.

Lethbridge, T. and Laganiere, R. (2005).Object-Oriented Software Engineering: Practical SoftwareDevelopment Using UML and Java.McGraw,-Hill.

M.I.Capel Tema 1