Intoducción Arquitectura SW 1

Embed Size (px)

Citation preview

  • 7/24/2019 Intoduccin Arquitectura SW 1

    1/42

    Arquitectura de SoftwareIngeniera de SistemasITM

    Unidad 1. Introduccin

  • 7/24/2019 Intoduccin Arquitectura SW 1

    2/42

    Introduccin

    Es un conjunto de patrones que

    proporcionan un marco de referencianecesario para guiar la construccin deun software.

    Arquitectura de Software

    a arquitectura del software

  • 7/24/2019 Intoduccin Arquitectura SW 1

    3/42

    Introduccin

    !ermite a los programadores" analistas # todo

    el conjunto de desarrolladores del softwarecompartir una misma lnea de tra$ajo # cu$rirtodos los o$jeti%os # restricciones de laaplicacin.

    Arquitectura de Software

    a arquitectura del software

  • 7/24/2019 Intoduccin Arquitectura SW 1

    4/42

    Introduccin

    Es considerada el ni%el m&s alto en el dise'o

    de la arquitectura de un sistema. !uesto queesta$lecen la estructura" funcionamiento einteraccin entre las partes del software.

    Arquitectura de Software

    a arquitectura del software

  • 7/24/2019 Intoduccin Arquitectura SW 1

    5/42

    Introduccin

    os patrones de dise'o de software

    nacen de sus (omlogos patrones en laingeniera ci%il o arquitectura deedi)caciones.

    *asado en este &m$ito presentare unejemplo" del que luego se desprender&con facilidad el concepto que

    representa un patrn. Arquitectura de Software

    !atrones en el proceso de dise'o del software

  • 7/24/2019 Intoduccin Arquitectura SW 1

    6/42

    Introduccin

    Si tenemos que construir una casa en

    un lugar en el cual nie%a durante todoel a'o" una construccin tradicionaltendra el pro$lema de que el peso de lanie%e acumulada en el tec(o (ori+ontal

    # paralelo al piso" sera tan grande quela derrum$ara.

    Arquitectura de Software

    Ejemplo de !atrn

  • 7/24/2019 Intoduccin Arquitectura SW 1

    7/42

    Introduccin

    E,isten %arias soluciones al pro$lema

    pero la m&s optima # en la queseguramente estar&n pensando en estemomento es construir el tec(o de lacasa con una gran pendiente para que

    la nie%e cada se deslice por la misma #termine en el piso de forma que nuncase acumule so$re nuestro tec(o.

    Arquitectura de Software

    Ejemplo de !atrn -continuacin/

  • 7/24/2019 Intoduccin Arquitectura SW 1

    8/42

    Introduccin

    Esa solucin en la que muc(os de ustedespensaron casi de forma autom&tica es unpatrn.

    Arquitectura de Software

    Ejemplo de !atrn -continuacin/

  • 7/24/2019 Intoduccin Arquitectura SW 1

    9/42

    Introduccin

    0$ser%emos adem&s que la solucin o

    patrn se repite in)nidad de %eces sio$ser%amos un pue$lo donde nie%a" lo quenos dice que la solucin es reusa$le #compro$ada.

    Arquitectura de Software

    Ejemplo de !atrn -continuacin/

  • 7/24/2019 Intoduccin Arquitectura SW 1

    10/42

    Introduccin

    Un patrn de dise'o de software es unasolucin reusa$le # compro$ada a unpro$lema comn en el desarrollo desoftware.

    Arquitectura de Software

    23u4 es un patrn de dise'o del software5

  • 7/24/2019 Intoduccin Arquitectura SW 1

    11/42

    Introduccin

    En el desarrollo Software el patrn de

    dise'o descri$e las clases # o$jetos que secomunicar&n entre s de manera quepuedan resol%er un pro$lema general dedise'o en un conte,to particular.

    Arquitectura de Software

    !atrones de dise'o en el desarrollo S6

  • 7/24/2019 Intoduccin Arquitectura SW 1

    12/42

    Introduccin

    En un conte,to inform&tico un patrn de

    dise'o es similar a conceptos como$i$lioteca de clases" framewor7s" t4cnicas #(erramientas de refactori+acin oprogramacin e,trema.

    Arquitectura de Software

    !atrones de dise'o en el desarrollo S6

  • 7/24/2019 Intoduccin Arquitectura SW 1

    13/42

    Introduccin

    a clasi)cacin de los patrones de dise'o eneste conte,to atiende a dos caractersticascomo son8

    Atendiendo a su propsito 9reacionales8 :esuel%en pro$lemas relati%os a la

    creacin de o$jetos

    Estructurales8 :esuel%en pro$lemas relati%os ala composicin de o$jetos

    ;e 9omportamiento8 :esuel%en pro$lemasrelati%os a la interaccin entre o$jetos

    Arquitectura de Software

    !atrones de dise'o en el desarrollo S6

  • 7/24/2019 Intoduccin Arquitectura SW 1

    14/42

    Introduccin

    a clasi)cacin de los patrones dedise'o en este conte,to atiende a dos

    caractersticas como son8

    Atendiendo a su &m$ito 9lases8 :elaciones est&ticas entre clases

    0$jetos8 :elaciones din&micas entreo$jetos

    Arquitectura de Software

    !atrones de dise'o en el desarrollo S6

  • 7/24/2019 Intoduccin Arquitectura SW 1

    15/42

    Introduccin

    1. El nombre del patrn permite descri$ir"

    en una o dos pala$ras" un pro$lema dedise'o junto con sus soluciones #consecuencias.

    Al dar nom$re a un patrn inmediatamenteestamos incrementando nuestro %oca$ulariode dise'o" lo que nos permite dise'ar conma#or a$straccin.

    Arquitectura de Software

    Un patrn tiene cuatro elementos esenciales

  • 7/24/2019 Intoduccin Arquitectura SW 1

    16/42

    Introduccin

  • 7/24/2019 Intoduccin Arquitectura SW 1

    17/42

    Introduccin

    >. a solucindescri$e los elementos que constitu#enel dise'o" sus relaciones" responsa$ilidades #

    cola$oraciones. a solucin no descri$e un dise'o ouna implementacin en concreto" sino que unpatrn es m&s $ien como una plantilla que puedeaplicarse en muc(as situaciones diferentes.

    El patrn proporciona una descripcin a$stracta de unpro$lema de dise'o # cmo lo resuel%e una disposicingeneral de elementos -en nuestro caso" clases #o$jetos/.

    Arquitectura de Software

    Un patrn tiene cuatro elementos esenciales

  • 7/24/2019 Intoduccin Arquitectura SW 1

    18/42

    Introduccin

    ?. as consecuenciasson los resultados as comolas %entajas e incon%enientes de aplicar el

    patrn. Aunque cuando se descri$en decisionesde dise'o muc(as %eces no re=ejan susconsecuencias" 4stas son fundamentales parae%aluar las alternati%as de dise'o # comprenderlos costes # $ene)cios de aplicar el patrn.

    as consecuencias en el Software suelen referirse alequili$rio entre espacio # tiempo. Tam$i4n puedentratar cuestiones de lenguaje e implementacin.

    Arquitectura de Software

    Un patrn tiene cuatro elementos esenciales

  • 7/24/2019 Intoduccin Arquitectura SW 1

    19/42

    Introduccin

    Nombre: :etroalimentacin %isual de

    na%egacin directa. Problema: El usuario tiene di)cultades

    para acceder directamente a las %entanasdel sistema inform&tico # desconoce cual

    de entre ellas es la %entana actual detra$ajo.

    Principio de usabilidad:@uiar al usuario# dar el control de la interaccin al usuario.

    Arquitectura de Software

    Ejemplo de lo que podra construir un patrn de dise'o

  • 7/24/2019 Intoduccin Arquitectura SW 1

    20/42

    Introduccin

    Contexto: ;ada una gran cantidad deinformacin facilitar al usuario los medios parana%egar directamente entre las %entanas delsistema inform&tico.

    Fuerza: El sistema de$e siempre mostrar lalista de %entanas na%ega$les.

    Solucin: !ermitir al usuario seleccionardirectamente la %entana de la interfa+ #mostrar continuamente la %entana acti%a #desacti%as.

    Arquitectura de Software

    Ejemplo de lo que podra construir un patrn de dise'o

  • 7/24/2019 Intoduccin Arquitectura SW 1

    21/42

    Introduccin

    Consecuencias: El acceso directo a las

    %entanas del sistema no solo $ene)cia lamanipulacin directa de ellas sino tam$i4nla manipulacin de los o$jetos que retienen#a que cada %entana es de)nida en t4rminosde sus o$jetos de interaccin -ejemplo8

    iconos" tems de men" radio $otones/ loscuales permiten la adquisicin # larestitucin de informacin que requiere elusuario.

    Arquitectura de Software

    Ejemplo de lo que podra construir un patrn de dise'o

  • 7/24/2019 Intoduccin Arquitectura SW 1

    22/42

    Introduccin

    a indicacin del focus de una %entana es

    una t4cnica frecuentemente utili+ada en laretroalimentacin de na%egacin directa.

    Arquitectura de Software

    Ejemplo de lo que podra construir un patrn de dise'o

  • 7/24/2019 Intoduccin Arquitectura SW 1

    23/42

    Introduccin

    ;e esta peque'a introduccin %eamosun ejemplo real en el &m$ito del dise'ode software el patrn constructor o$uilder pattern.

    Arquitectura de Software

    Ejemplo de un patrn de dise'o del software

  • 7/24/2019 Intoduccin Arquitectura SW 1

    24/42

    Introduccin

    Problema que resuelve: 9omo (acer

    para que un nico proceso deconstruccin sea capas de creardiferentes productos para que dic(oproceso nos a$straiga u oculte los

    detalles constructi%os particulares decada producto.

    Arquitectura de Software

    !atrn *uilder !attern

  • 7/24/2019 Intoduccin Arquitectura SW 1

    25/42

    Introduccin

    ;ado que las de)niciones a$stractasson m&s difciles de comprender"lle%aremos la de)nicin anterior a unejemplo concreto del mundo real para

    lograr una ma#or claridad.

    Arquitectura de Software

    !atrn *uilder !attern

  • 7/24/2019 Intoduccin Arquitectura SW 1

    26/42

    Introduccin

    9omo (acer para que un nico proceso

    de construccin" la secuencia deinstrucciones -*uildTope-/ *uildMedio-/*uild*ase-//" sea capas de creardiferentes productos como ser un

    cuadro" un triangulo o un rect&ngulo"para que dic(o proceso nos a$straiga uoculte los detalles constructi%osparticulares de cada )gura geom4trica-producto/. Arquitectura de Software

    !atrn *uilder !attern

  • 7/24/2019 Intoduccin Arquitectura SW 1

    27/42

    Introduccin

    Solucin: a solucin la ofrece el

    patrn constructor o en ingles -$uilderpattern/" el mismo esta conformado poruna clase directora -;i$ujante;irector/que es el responsa$le del proceso de

    construccin" es en ella donde seencuentra la secuencia de comandos*uildTope-/ *uildMedio-/ *uild*ase-/.

    Arquitectura de Software

    !atrn *uilder !attern

  • 7/24/2019 Intoduccin Arquitectura SW 1

    28/42

    Introduccin

    Esta clase directora -;i$ujante;irector/

    opera utili+ando una clase a$stracta-@rap(ic*uilder/" en la cual seencuentran de)nidos los prototipos o)rmas de los m4todos *uildTope-/

    *uildMedio-/ *uild*ase-/ pero no suimplementacin" dic(a implementacines responsa$ilidad de cada constructoro $uilder concreto.

    Arquitectura de Software

    !atrn *uilder !attern

  • 7/24/2019 Intoduccin Arquitectura SW 1

    29/42

    Introduccin

    !ara nuestro ejemplo" cada constructoro $uilder concreto" son las clases9uadrado*uilder" Triangulo*uilder #:ectangulo*uilder" estas clases

    encapsulan los detalles deimplementacin particulares de cadaproducto.

    Arquitectura de Software

    !atrn *uilder !attern

  • 7/24/2019 Intoduccin Arquitectura SW 1

    30/42

    Introduccin

    El producto que queda construido

    despu4s de la ejecucin del nicoproceso de construccin es un o$jeto dela clase @ra)co" podemos o$ser%ar unarelacin de agregacin que une las

    clases @rap(ic*uilder # la clase @ra)co"esto se de$e a que la clase@rap(ic*uilder esta compuesta por uno$jeto del tipo @ra)co.

    Arquitectura de Software

    !atrn *uilder !attern

  • 7/24/2019 Intoduccin Arquitectura SW 1

    31/42

    Introduccin

    !ero como la destruccin del o$jeto deltipo @rap(ic*uilder no implicadestruccin del o$jeto @ra)co se tratade una relacin de agregacin # no de

    composicin" esto se sim$oli+a con undiamante $lanco del lado de la claseagregada.

    Arquitectura de Software

    !atrn *uilder !attern

  • 7/24/2019 Intoduccin Arquitectura SW 1

    32/42

    Introduccin

    Arquitectura de Software

    !atrn *uilder !attern B;iagrama de 9lases UMC

  • 7/24/2019 Intoduccin Arquitectura SW 1

    33/42

    Introduccin

    Se (an desarrollado diferentes formatos

    segn las necesidades de cada dominio dedise'o" pero manteniendo su estructuraoriginal.

    En la literatura podemos encontrardiferentes formatos para descri$ir un patrnsegn el ni%el de detalle con el que se quiera(acer la descripcin.

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    34/42

    Introduccin

    a siguiente plantilla da una estructurauniforme a la informacin" (aciendo que lospatrones de dise'o sean m&s f&ciles deaprender" comparar # usar.

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    35/42

    Introduccin

    Nombre del patrn y clasifcacin

    El nom$re del patrn transmite sucintamentesu esencia. Un $uen nom$re es %ital" porquepasar& a formar parte de nuestro %oca$ulariode dise'o. a clasi)cacin del patrn re=eja el

    esquema que %eremos en la siguiente unidadDos patrones de dise'o en el desarrollo desoftware.

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    36/42

    Introduccin

    Propsito

    Una frase $re%e que responde a las siguientescuestiones8

    23u4 (ace este patrn de dise'o5

    2En qu4 se $asa5

    29u&l es el pro$lema concreto de dise'o queresuel%e5

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    37/42

    Introduccin

    Tambin conocido como

    0tros nom$res" si e,isten" por los que seconoce al patrn.

    otivacin

    Un escenario que ilustra un pro$lema de

    dise'o # cmo las estructuras de clases #o$jetos del patrn resuel%en el pro$lema. Elescenario a#udar& a entender la descripcinque sigue.

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    38/42

    Introduccin

    !plicabilidad

    2En qu4 situaciones se puede aplicar el patrn de

    dise'o5 23u4 ejemplos (a# de malos dise'os que elpatrn puede resol%er5 29mo se puede reconocerdic(as situaciones5

    "structura

    Una representacin gr&)ca de las clases del patrnusando una notacin $asada en la T4cnica deModelado de 0$jetos. Se (ace uso de diagramas deinteraccin para mostrar secuencias de peticiones #cola$oraciones entre o$jetos.

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    39/42

    Introduccin

    Participantes

    as clases # o$jetos participantes en el patrnde dise'o" junto con sus responsa$ilidades.

    Colaboraciones

    9mo cola$oran los participantes para lle%ar a

    ca$o sus responsa$ilidades.

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    40/42

    Introduccin

    Consecuencias

    29mo consigue el patrn sus o$jeti%os529u&les son las %entajas e incon%enientes #los resultados de usar el patrn5 23u4aspectos de la estructura del sistema se

    pueden modi)car de forma independiente5

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    41/42

    Introduccin

    #mplementacin

    29u&les son las di)cultades" trucos o t4cnicasque de$eramos tener en cuenta a la (ora deaplicar el patrn5 2Fa# cuestiones espec)casdel lenguaje5

    Cdi$o de e%emploGragmentos de cdigo que muestran cmo sepuede implementar el patrn.

    Arquitectura de Software

    ;ocumentacin de los patrones

  • 7/24/2019 Intoduccin Arquitectura SW 1

    42/42

    Introduccin

    &sos conocidos

    Ejemplos del patrn en sistemas reales. Seinclu#en al menos dos ejemplos de diferentesdominios.

    Patrones relacionados

    23u4 patrones de dise'o est&n estrec(amenterelacionados con 4ste5 29u&les son lasprincipales diferencias5 29on qu4 otrospatrones de$era usarse5

    ;ocumentacin de los patrones