Tema 2 - Introducción a Los PPDD

download Tema 2 - Introducción a Los PPDD

of 24

Transcript of Tema 2 - Introducción a Los PPDD

  • 1Departamento deDepartamento de

    Lenguajes y Sistemas InformLenguajes y Sistemas Informticosticos

    escuela tcnica superior

    de ingeniera informtica

    Introduccin a los Patrones de Diseo

    Ingeniera del Software II

    El Camino

    Qu es un Patrn de Diseo (PD)

    Qu no es un PD

  • 2Qu es un Patrn de Diseo

    Qu es el diseo?Qu es un patrn? Qu es un patrn de diseo?

    El diseo es una actividad

    El cmo frente al qu

    Hacerlo correcto frente a hacer lo correcto

    Asignar responsabilidades a las clases

    Es una actividad difcil?

    Debe serlo pues est bien remunerada

    Un martillo no te hace un buen arquitecto. Conocer un lenguaje OO no te hace un buen diseador (aunque es imprescindible)

    Los requisitos no funcionales son conflictivos

    Qu es un Patrn de Diseo

    Por lo tanto el diseador debe

    Encontrar una solucin que consiga el equilibrio ptimo entre las propiedades no funcionales

    Si damos el mismo documento de requisitos a 10 diseadores, obtendremos 10 diseos diferentes

    Qu diferencia hay entre los diseadores expertos y los novatos?

    Recetas para los problemas habituales. No estn reinventando la rueda continuamente

    Utilizan recetas exitosas

    Cmo se describen estas recetas?

  • 3Qu es un Patrn de Diseo

    Orgenes de los PP.DD

    Definiciones

    Clasificacin

    Ejemplo: PD Singleton

    Qu es un Patrn de Diseo

    Orgenes de los PP.DD

    Definiciones

    Clasificacin

    Ejemplo: PD Singleton

  • 4Qu es un PDOrgenes de los PP.DD

    Christopher Alexander (Viena, 1936)

    1977

    1979

    Qu es un PDOrgenes de los PP.DD

    Kent BeckWardCunnighan

    1. Window per Task

    2. Few Panes

    3. Standard Panes

    4. Nouns and Verbs

    5. Short Menus

    OOPSLA 87

  • 5Qu es un PDOrgenes de los PP.DD

    1990. Erich Gamma asiste a una charla de Bruce Andersen en un taller del OOPSLA, titulada Architecture Handbook. Esta realizando su tesis doctoral y necesita desarrollar un Framework C++ para aplicaciones grficas multiplataforma (ET++)

    RalphJohnson

    JohnVlissides

    Richard Helm

    1991. Andersen organiza un taller donde Gamma coincide con:

    Qu es un PDOrgenes de los PP.DD

    1993. Beck y Booch sufragan un retiro en las montaas de colorado. Nace el HillSide

    1994. Hillside organiza la primera edicin del PLOP

    (Patterns Languages of Program Design). La banda

    de los cuatro venden ms de 750 ejemplares de su

    libro (10 veces ms que cualquier libro hasta

    entonces)

  • 6Qu es un PDOrgenes de los PP.DD

    Lecciones aprendidas

    Los PP.DD han surgido tomando ideas de otras disciplinas (la arquitectura las toma a su vez de la Biologa)

    Los PP.DD han tenido su origen en la Academia y no en la industria (es de los pocos ejemplos)

    Las tesis doctorales sirven para algo

    El mundo anglosajn suele hacer un uso intensivo de los grupos de presin en todos los mbitos

    Orgenes de los PP.DD

    Definiciones

    Clasificacin

    Ejemplo: PD Singleton

    Qu es un PD

  • 7De manera general

    Qu es un PDDefiniciones

    Patrn de diseo: Una solucin

    general a un problema general

    que puede adaptarse a un

    problema concreto

    http://www.textile-creation-club.com/esp/patrones.htm

    Patrn: Modelo que sirve de

    muestra para sacar otra cosa

    igual (RAE)

    En Arquitectura

    Qu es un PDDefiniciones

    Cada patrn describe un problema que ocurre

    una y otra vez en nuestro entorno. Tambin

    describe el ncleo de la solucin al problema, de

    forma que puede utilizarse un milln de veces

    sin hacer dos veces lo mismo

    Tcnica de descripcin

    Par problema-solucin

    Recurrente

    Slo el ncleo, no es una solucin completa

    Reutilizable

  • 8 En Ingeniera del Software (Gamma95, pg. 360)

    Qu es un PDDefiniciones

    A design pattern systematically names, motivates,

    and explains a general design that addresses a

    recurring design problem in OO systems.

    It describes the problem, the solution, when to

    apply the solution, and its consequences. It also

    gives implementation hints and examples.

    The solution is a general arrangement of object and

    classes that solve the problem. The solution is

    customized and implemented to solve the problem

    in a particular context.

    En Ingeniera del Software (Larman, pag. 204)

    Existe consenso en:

    Par (problema, solucin)

    Reutilizar conocimiento vs reutilizar software

    Problemas recurrentes (Cundo se considera recurrente?)

    Qu es un PDDefiniciones

    Un patrn es un par problema/solucin con nombre

    que se puede aplicar en nuevos contextos con

    consejos acerca de cmo aplicarlo en nuevas

    situaciones y discusiones sobre sus compromisos

  • 9 Orgenes de los PP.DD

    Definiciones

    Clasificacin

    Ejemplo: PD Singleton

    Qu es un PD

    ClasificacinPlantilla de descripcin de la GoF

    1. Nombre y clasificacin: expresa sucintamente la esencia del patrn

    2. Intencin: frase corta que responde a qu hace y qu resuelve

    3. Tambin conocido como: otros nombres conocidos para el PD

    4. Motivacin: un escenario que ilustra como el PD resuelve un problema concreto

    5. Aplicabilidad: otras situaciones en las que resulta aplicable el PD

    6. Estructura: diagramas de clases

    7. Participantes: responsabilidad de cada clase participante

    8. Colaboraciones: diagrama de colaboracin y/o de secuencias

    9. Consecuencias: ventajas e inconvenientes

    10.Implementacin: dificultades, tcnicas y trucos a tener en cuenta al aplicar el PD

    11.Cdigo de ejemplo: ejemplo de implementacin y de uso del PD

    12.Usos conocidos: ejemplos de uso en sistemas reales

    13.Patrones relacionados: diferencias con los patrones ms relacionados

  • 10

    Cadena de Responsabilidad, Comando,

    Iterador, Mediador, Memento,

    Observador, Estado, Estrategia, Visitante,

    Mtodo Plantilla

    De Comportamiento

    Adaptador, Puente, Compuesto, Decorador,

    Fachada, Peso Mosca, Apoderado

    Estructural

    Fbrica Abstracta, Mtodo Fbrica,

    Constructor, Prototipo, Singular

    Creacional

    ClasificacinCatlogo de la GoF

    Clasificacin Relaciones entre patrones

  • 11

    ClasificacinCatlogo de Grand

    Parte de la de Gamma y la extiende con 9 categoras ms:

    Fundamentales

    Particionamiento

    Concurrencia

    GRASP

    GUI

    Organizacin del cdigo

    Optimizacin del cdigo

    Robustez

    Prueba

    Orgenes de los PP.DD

    Definiciones

    Clasificacin

    Ejemplo: PD Singleton

    Qu es un PD

  • 12

    Facade

    1. Nombre/Clasificacin: Facade (Fachada). Estructural.

    2. Intencin: Proporcionar una interfaz unificada para un conjunto de interfaces en un subsistema, hacindolo ms fcil de usar

    3. Motivacin: Reducir la complejidad y minimizar dependencias

    clases clientes

    clases del subsistema

    FachadaFachada

    Facade

    Motivacin

    Estructurar un entorno de programacin

    CompiladorCompilador

    Clases del

    subsistema de

    compilacin

    Clases del

    subsistema de

    compilacin

    EditorEditor

    DepuradorDepurador

    LinkadorLinkador

    TokenToken

    AnaLexAnaLex

    AnaSinAnaSin

    ASAASA TabSim

    TabSim

    Compilar()Compilar()

  • 13

    Facade

    4) Aplicabilidad:

    Se quiera proporcionar una interfaz sencilla para un subsistema complejo

    Se quiera desacoplar un subsistema de sus clientes y de otros subsistemas, hacindolo mas independiente y portable

    Se quiera dividir los sistemas en niveles: las fachadas seran el punto de entrada a cada nivel

    5) EstructuraClases del

    subsistema

    Clases del

    subsistema

    BB

    AA

    CC

    DD

    FachadaFachada

    EE

    Facade

    6) Participantes

    Fachada: delegar las peticiones de los clientes en los objetos del subsistema

    Clases del subsistema: implementar la funcionalidad del subsistema

    7) Colaboraciones

    Los clientes se comunican con el subsistema a travs de la fachada, que reenva las peticiones a los objetos del subsistema apropiados y puede realizar tambin algn trabajo de traduccin

    Los clientes que usan la fachada no necesitan acceder directamente a los objetos del sistema

  • 14

    Facade

    8. Ejemplo: Fachada para el acceso a BBDD va JDBC

    Para consultar una base de datos es necesario colaborar con objetos de al menos cinco clases diferentes

    1. Connection. Conexin a la BBDD

    2. DatabaseMetadata. Acceso a nombres de tablas y campos

    3. Statement. Crea la sentencia SQL

    4. ResultSet. Recuperar la informacin en crudo

    5. ResultSetMetaData. Accede a los campos del ResultSet

    Es ms que evidente que se puede simplificar la colaboracin

    Facade

    9) Consecuencias

    Oculta a los clientes de la complejidad del subsistema y lo hace ms fcil de usar

    Favorece un acoplamiento dbil entre el subsistema y sus clientes, consiguiendo que los cambios de las clases del sistema sean transparentes a los clientes

    Facilita la divisin en capas y reduce dependencias de compilacin

    No se impide el acceso a las clases del sistema

  • 15

    Facade

    10) Implementacin

    Se puede reducir an ms el acoplamiento haciendo que la fachada sea una clase abstracta, de forma que se pueda escoger entre distintas implementaciones del subsistema

    Java y las ltimas versiones de C++ facilitan la definicin de clases privadas a un subsistema.

    11) Patrones relacionados

    Las fachadas suelen ser Singletons

    Indireccin (GRASP)

    Controlador (GRASP). Los controladores suelen actuar como puntos de entrada (fachadas) de la capa lgica

    El Camino

    Qu es un Patrn de Diseo (PD)

    Qu no es un PD

  • 16

    El camino

    Bibliotecas

    Frameworks

    Idioms

    Antipatrones

    Refactorizaciones

    Bibliotecas (Toolkits)

    Tambin conocidas como libreras y Toolkits

    Conjunto de clases diseado para ser reutilizados: TADs, manejo de perifricos, grficos, gestin de documentos XML, Pueden verse como el equivalente en OO de las bibliotecas de subrutinas

    Influencia baja/local en el diseo de la aplicacin cliente

    Una cuestin clave de su diseo reside en conseguir facilidad de uso para el mximo nmero de escenarios sin complicar la interfaz ni reducir el rendimiento

    Bibliotecas vs PP.DD

    Son comparables? Qu contienen?

    Cul es su tamao medio?

  • 17

    El Camino

    Bibliotecas

    Frameworks

    Idioms

    Antipatrones

    Refactorizaciones

    En el origen de los tiempos

    Un framework era un entorno de desarrollo (IDE)

    Componentes habituales:

    Editor de textos

    Ayuda integrada

    Compilador

    Biblioteca de controles visuales

    Biblioteca de controles datos

    Constituan un marco de trabajo para el desarrollo de aplicaciones

    Visual Basic populariz el concepto en la industria

  • 18

    Qu es un framework hoy

    Conjunto de clases parcialmente funcional (no es una aplicacin) para un dominio de aplicacin

    Les falta aquello que es propio de la aplicacin

    Ejemplos: AWT, Swing, Struts, Junit, Compact Framework, James (genuinamente andaluz),

    Gran influencia en el diseo de la aplicacin cliente

    Frameworks vs PP.DD

    Son comparables?

    Qu contienen?

    Cul es su tamao medio?

    El principio de Hollywood

  • 19

    El principio de Hollywood

    Main() {

    i1 = new I1();

    i2 = new I2();

    i1 = i2.m(i1.g());

    }

    Ventajas e inconvenientes

    Reutilizacin de diseo y cdigo

    Experiencia del diseador del framework

    Costes de produccin reducidos

    Es difcil encontrar el framework apropiado

    Es difcil usar ms de un framework al mismo tiempo

    Son difciles de construir y de aprender a usar

  • 20

    El camino

    Bibliotecas

    Frameworks

    Idioms

    Antipatrones

    Refactorizaciones

    Idioms

    Una forma caracterstica de utilizar un LP [Fiadeiro]

    Patrn de bajo nivel especfico de un LP. Describen soluciones a problemas de implementacin de un determinado LP [Buschmann]

    gestin de memoria en C++

    Idiom K-R: while (*dest++=*src++)

    Para algunos, el Singleton no es un patrn de diseo

    Una coleccin de idioms conforman un estilo

    Las diferencias entre PP.DD e idioms son difusas

    Algunos PP.DD de hoy sern idioms maana

    Iterator, singleton [Gamma]

    interface [Grand]

    Los PP.DD son casi independientes del L.P

  • 21

    El camino

    Bibliotecas

    Frameworks

    Idioms

    Antipatrones

    Refactorizaciones

    Antipatrones

    Se aprende de los errores ms que de los aciertos

    Recetas que no deben emplearse

    Intentan reutilizar conocimiento de modo similar a los PP.DD

    Ejemplos

    The blob

    Poltergeists

    Cut and paste

    Spaguetti code

    .

    http://www.antipatterns.com/

  • 22

    El camino

    Bibliotecas

    Frameworks

    Idioms

    Antipatrones

    Refactorizaciones

    Refactorizaciones

    M. Fowler las ha popularizado

    No siempre se consigue un diseo adecuado qu hacer en tales situaciones?

    Nada. En ocasiones es lo ms rentable

    Refactorizar en las sucesivas operaciones de mantenimiento

    La refactorizacin mantiene invariable la funcionalidad

    Estn organizadas en catlogos

    Muchas de ellas estn muy relacionadas con PP.DD

    Pull-up. Muy relacionada con el PD Template Method

  • 23

    Bibliografa

    Se recomienda revisar los siguientes enlaces:

    WIKIPEDIA (design patterns, antipatterns, framework, idioms)

    Historia de los patrones (http://c2.com/cgi-bin/wiki?HistoryOfPatterns)

    Refactorizacin (http://c2.com/cgi-bin/wiki?HistoryOfPatterns)

    Cuestiones

    Resolver los test de exmenes de convocatorias anteriores

  • 24

    Cuestiones

    !Gracias!

    Podemos mejorar esta leccin?

    Mndanos un email a [email protected]

    Visite la web de la asignatura www.lsi.us.es