SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Estilos Arquitectónicos
  (Arquitectura de Software para Practicantes)




          Universidad de los Andes
                 Demián Gutierrez
                   Marzo 2013
                                                 1
Diseño Arquitectónico

                                              Arquitectura
                                              del Software
    Diseño
 Arquitectónico




                      Estilos                 Frameworks
                  Arquitectónicos              (Marcos)




                                Patrones de                   Bibliotecas /
                                  Diseño                     Componentes



                                                Clases /
                                               Funciones

                                                                              2
Diseño Arquitectónico




          ¿qué es un estilo?


           ¿qué es un estilo
            arquitectónico?

                               3
Estilos Arquitectónicos




            Art Deco                     Modernismo


     aunque conste que sigo pensando que la comparación
    del software con la ingeniería civil es muy desafortunada
                                                                4
Estilos Arquitectónicos




     aunque conste que sigo pensando que la comparación
    del software con la ingeniería civil es muy desafortunada   5
¿Estilos Arquitectónicos?




   Un estilo arquitectónico define una familia
    de sistemas (cierto tipo de sistemas) en
    términos de patrones estructurales, de
      control, de comunicación, etcétera




                     Sommerville (Cap 11)        6
Estilos Arquitectónicos

       un estilo arquitectónico describe
                 Un conjunto de componentes y
                  (con sus responsabilidades)

          Un conjunto de conectores entre componentes
       (comunicación, coordinación, cooperación, etcétera)

           Restricciones que definen cómo se integran
            los componentes para formar el sistema

              Modelos que permiten comprender las
       propiedades de un sistema general en función de las
       propiedades conocidas de las partes que lo integran

      ¿no suena todo esto sospechosamente parecido al
            concepto de arquitectura de software?
                                                             7
                      Fuente: Pressman (Cap 10)
Diseño Arquitectónico



   La arquitectura de un sistema de software
     puede basarse en uno (o en varios)
     modelos o estilos arquitectónicos bien
                   conocidos
                    Sommerville (Cap 11)




    un estilo arquitectónico define
              (a alto nivel)
     la arquitectura de un sistema
                                               8
Estilos Arquitectónicos


                   para todas los
              estilos arquitectónicos
                   (arquitecturas)
             es necesario preguntarse:



        ¿en qué contextos aplica?
       ¿qué ventajas tiene el estilo?
         ¿qué desventajas tiene?
    ¿cómo se combina con otros estilos?
                                          9
Estilos Arquitectónicos
Impacto en los Requisitos NF

       Seguridad             Confiabilidad      Rendimiento          Extensibilidad



                                       Eficiencia              Facilidad de
            Mantenibilidad
                                    Memoria/Ejecución            Prueba




    Portabilidad         Disponibilidad         Reusabilidad            Escalabilidad




                                    ...otras...

           ¿de qué forma impacta el uso de un estilo
               en las propiedades del sistema?
                                                                                        10
Estilos Arquitectónicos
¿Acoplamiento / Cohesión?



          ¿qué hay sobre estos dos conceptos?




   Acoplamiento                     Cohesión


       ¿será posible analizar un estilo arquitectónico
           en función de estos dos conceptos?
                                                         11
Estilos Arquitectónicos
¿La importancia de la responsabilidad?




             Responsabilidades



           ¿cuáles son las responsabilidades de
           cada bloque/parte de la arquitectura?
                                                   12
Diseño Arquitectónico




           algunos estilos
        arquitectónicos bien
              conocidos


                               13
Arquitectura Monolítica

          Una arquitectura monolítica describe
             una aplicación en la que toda la
          funcionalidad del sistema (ej. acceso
           a datos, interfaz de usuario, lógica,
              etcétera) está implementada y
               mezclada en un solo bloque.
             Esto, en la gran mayoría de los
             casos, no es una buena idea...
                        ¿por qué?
                                                           Sistema
                                                           TODO EL
                                                           SISTEMA

     ¿impacto sobre el acoplamiento y la cohesión
       responsabilidades, otras características?
           Fuente: http://en.wikipedia.org/wiki/Monolithic_application   14
Arquitectura Monolítica
(Un Ejemplo)
                                                   Código cliente general,
        Programa Cliente                           interfaces de usuario,
                                                   lógica, todo mezclado
                                                     con el SQL, con el
                                                   código encargado del
                                                    acceso a la BD, etc.




         Si es necesario cambiar el código de acceso a la BD,
            (por ejemplo, migrar de MySQL a PostgreSQL)
                    ¿el trabajo se hace fácil o difícil?                     15
Arquitectura Monolítica
(Un Ejemplo / Una Mejora)
                                                  Código cliente general,
        Programa Cliente                          interfaces de usuario,
                                                        lógica, etc.




                                                    Código SQL junto al
                                                   código encargado del
                                                      acceso a la BD
                         DAOs / DTO




        Si es necesario cambiar el código de acceso a la BD,
           (por ejemplo, migrar de MySQL a PostgreSQL)
                   ¿el trabajo se hace fácil o difícil?                     16
Estilos Arquitectónicos
(Tuberías y Filtros)

          Filtros                           Tuberías
    (Transformación                         (Flujo de
       de Datos /                            Datos /
      Información)                        Información)
                         Filtro 3



             Filtro 1                 Filtro 4       Filtro 5



                         Filtro 2



                        Tuberías y Filtros
     ¿Impacto sobre el acoplamiento y la cohesión?
                                                                17
Estilos Arquitectónicos
(Tuberías y Filtros)




                   Tuberías y Filtros
                                        18
Estilos Arquitectónicos
(Tuberías y Filtros)




                    Tuberías y Filtros
                El “pipeline” de OpenGL
                                          19
Arquitectura por Capas

                                                             API
                                                           (Application
                                         Capa 1           Programming
    Mas Seguridad / Protección




                                                            Interface)
                                                          Interfaz
       Menos Abstracción




                                         Capa 2



                                          ...

                                         Capa N



                                 Arquitectura por Capas
     ¿Impacto sobre el acoplamiento y la cohesión?                        20
Arquitectura por Capas
(La Infame Arquitectura a 3 Capas)




           Capa de
         Presentación
                              Capa de
                              Proceso /
           (Interfaz
                              Negocio
          Gráfica de                          Capa de
           Usuario)                         Persistencia   BD
                              (Lógica /
                              Reglas de
        (HTML, Swing,
                              Negocio)
          Qt, GTK,
          etcétera)




                       Arquitectura a tres Capas
       (muy utilizada en aplicaciones empresariales)            21
Arquitectura por Capas
(Sistemas Operativos)




                Arquitectura por Capas
                                         22
Estilos Arquitectónicos
(Repositorio / Pizarrón)

              Aplicación /          Aplicación /           Aplicación /
               Modulo 1              Modulo 2               Modulo 3




                               Repositorio
                    (Base de Datos, Sistema de Archivos,
                       Memoria Compartida, etcétera)




              Aplicación /                                 Aplicación /
                                         ...
               Modulo 4                                     Modulo N



                     Repositorio / Pizarrón
     ¿Impacto sobre el acoplamiento y la cohesión?
                                                                          23
Estilos Arquitectónicos
(Control Centralizado - Síncrono)


                                     Programa
                                     Principal




           Rutina 1                  Rutina 2                  Rutina 3



    Rutina 1.1   Rutina 1.2   Rutina 2.1   Rutina 2.1   Rutina 3.1   Rutina 3.2




                         Control Centralizado
                                                                                  24
Estilos Arquitectónicos
(Control Centralizado - Asíncrono)

           Procesos                                  Procesos
              Tipo 1                                   Tipo 4
         (Ej: Sensores)                          (Ej: Actuadores)




                                Controlador
                                del Sistema



           Procesos                Procesos         Procesos
             Tipo 2                 Tipo 3           Tipo 5
          (Ej: Cálculo)           (Ej: Fallos)     (Ej: Fallos)


                          Control Centralizado
     ¿Impacto sobre el acoplamiento y la cohesión?                  25
Estilos Arquitectónicos
(Sistemas Dirigidos por Eventos)

   Cada subsistema genera eventos según su condición y define que
            eventos de otros subsistemas desea atender


    Subsistema       Subsistema                      Subsistema
                                          ...
        1                2                               N




                       Manejador de Eventos


     El manejador de eventos se encarga de enviar los eventos
      generados a aquellos sistemas interesados en recibirlos

     ¿Impacto sobre el acoplamiento y la cohesión?                  26
Arquitectura Cliente-Servidor

                          Petición

                         Respuesta

     Cliente 1



                         Red           Servidor 1
                                          ...
                          Internet,
     Cliente 2           LAN, WAN
       ...

                                       Servidor N
     Cliente N


                    Cliente Servidor
                                                    27
Arquitectura Cliente-Servidor
(Liviano vs Pesado)


                           Petición

                          Respuesta



                             Red

      Cliente
                                              Servidor




           ¿Cliente “Liviano” vs Cliente Pesado?

                                                         28
Arquitectura WEB
(Contenido Estático)



                       Petición: GET index.html

      Cliente

     navegador
        WEB                                        Servidor
    (Ej. Firefox)
                                                    servidor
                                                      WEB
                             index.html           (Ej. Apache)

                         Respuesta:




                     Arquitectura WEB
                    (Contenido Estático)
                                                                 29
Arquitectura WEB
(Contenido Dinámico)


                   Petición: GET index.php


     Cliente

    navegador
       WEB
                                             Servidor     Servidor
   (Ej. Firefox)
                              resultado
                              en HTML

                                             motor de
                    Respuesta:                PHP           BD

                                              index.php


                              Arquitectura WEB
                            (Contenido Dinámico)
                                                                     30
Diseño Arquitectónico




  ¿cómo se podría combinar
   el estilo cliente-servidor
   con los otros estilos que
       hemos discutido?

                                31
Estilos Arquitectónicos
(Sistema Distribuido / Arquitecturas Peer To Peer)

                                P2                        P6

                                            P5
     Un par puede
    jugar un rol de   P1
       cliente y/o
      de servidor,
   dependiendo de                                          P7
                                      P4
   las necesidades
     del momento



                           P3                        P8
                                      P9


     Cada uno de los pares descubre a sus otros pares y
           establecen conexiones al mismo nivel
                  (no de forma jerárquica)
      cooperando para lograr un objetivo determinado            32
Estilos Arquitectónicos
(Arquitecturas de Referencia)


                           Normalmente se obtienen
                           por medio del estudio de
                             un tipo de aplicación
                              (de un dominio en
                                   particular)


                                Representan una
                             arquitectura “ideal” que
                                incluye todas las
                            características que cierto
                                 tipo de sistema
                            podría/debería incorporar
                                                         33
Gracias




   ¡Gracias!


               34

Más contenido relacionado

La actualidad más candente

Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Marta Silvia Tabares
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareLiliana Pacheco
 
Diseno de la arquitectura
Diseno de la arquitecturaDiseno de la arquitectura
Diseno de la arquitecturaFatima Cham
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para DummiesSorey García
 
2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónicolandeta_p
 
Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaDemián Gutierrez
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del softwareJohns Chacon
 
Fundamentos arquitectura del software
Fundamentos arquitectura del softwareFundamentos arquitectura del software
Fundamentos arquitectura del softwarevenezuela2015
 
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
 
DiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del SoftwareDiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del Softwarelcastillo110
 
Arquitectura software capitulo i
Arquitectura software capitulo iArquitectura software capitulo i
Arquitectura software capitulo iCathy Guevara
 
Arquitectura de software y Generación de computadores.
Arquitectura de software y Generación de computadores.Arquitectura de software y Generación de computadores.
Arquitectura de software y Generación de computadores.Juan Franco
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Softwarealfmuny
 

La actualidad más candente (20)

3 1 mde mda
3 1 mde mda3 1 mde mda
3 1 mde mda
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Diseno de la arquitectura
Diseno de la arquitecturaDiseno de la arquitectura
Diseno de la arquitectura
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para Dummies
 
2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitectura
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Fundamentos arquitectura del software
Fundamentos arquitectura del softwareFundamentos arquitectura del software
Fundamentos arquitectura del 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
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
DiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del SoftwareDiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del Software
 
Conceptos basicos arquitectura de software
Conceptos basicos arquitectura de softwareConceptos basicos arquitectura de software
Conceptos basicos arquitectura de software
 
Arquitectura software capitulo i
Arquitectura software capitulo iArquitectura software capitulo i
Arquitectura software capitulo i
 
Arquitectura de software y Generación de computadores.
Arquitectura de software y Generación de computadores.Arquitectura de software y Generación de computadores.
Arquitectura de software y Generación de computadores.
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Estilos arquitectónicos
Estilos arquitectónicosEstilos arquitectónicos
Estilos arquitectónicos
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 

Destacado

Tema 14 El Renacimiento Español 2017
Tema 14 El Renacimiento Español 2017Tema 14 El Renacimiento Español 2017
Tema 14 El Renacimiento Español 2017IES Las Musas
 
Elementos del Neoclasico
Elementos del NeoclasicoElementos del Neoclasico
Elementos del NeoclasicoJavier Abrego
 
Elementos arquitectónicos del estilo neoclásico
Elementos arquitectónicos del estilo neoclásicoElementos arquitectónicos del estilo neoclásico
Elementos arquitectónicos del estilo neoclásicomiriangalarraga
 
Estilos arquitectónicos de casas en Culiacán
Estilos arquitectónicos de casas en CuliacánEstilos arquitectónicos de casas en Culiacán
Estilos arquitectónicos de casas en CuliacánErnesto Murgaza
 
Arte Renacimiento Arquitectura España
Arte Renacimiento Arquitectura EspañaArte Renacimiento Arquitectura España
Arte Renacimiento Arquitectura EspañaRosa Fernández
 
Identificación de elementos arquitectónicos del estilo neoclásico
Identificación de elementos arquitectónicos del estilo neoclásicoIdentificación de elementos arquitectónicos del estilo neoclásico
Identificación de elementos arquitectónicos del estilo neoclásicoCarlos Salazar
 
Identificación de Elementos Arquitectónicos del Estilo Neoclásico
Identificación de Elementos Arquitectónicos del Estilo NeoclásicoIdentificación de Elementos Arquitectónicos del Estilo Neoclásico
Identificación de Elementos Arquitectónicos del Estilo NeoclásicoCarlos Silva Henriquez
 
Análisis arquitectónico, FORMA, VALLES BOLIVIANOS, U.A.G.R.M., Arquitectura
Análisis arquitectónico, FORMA, VALLES BOLIVIANOS, U.A.G.R.M., Arquitectura Análisis arquitectónico, FORMA, VALLES BOLIVIANOS, U.A.G.R.M., Arquitectura
Análisis arquitectónico, FORMA, VALLES BOLIVIANOS, U.A.G.R.M., Arquitectura Virginia Alejandra Zarco Gallardo
 
Estilos y tendencias del diseño arquitectonico
Estilos y tendencias del diseño arquitectonicoEstilos y tendencias del diseño arquitectonico
Estilos y tendencias del diseño arquitectonicojdmanchas
 
Analisis elementos arquitectura estilo neoclasico
Analisis elementos arquitectura estilo neoclasicoAnalisis elementos arquitectura estilo neoclasico
Analisis elementos arquitectura estilo neoclasicoyole_rios
 
Identificación de elementos arquitectónicos del estilo neoclásico
Identificación de elementos arquitectónicos del estilo neoclásicoIdentificación de elementos arquitectónicos del estilo neoclásico
Identificación de elementos arquitectónicos del estilo neoclásicoCarlos Salazar
 
Analisis Arquitectonico
Analisis ArquitectonicoAnalisis Arquitectonico
Analisis ArquitectonicoCheo Nava
 
Algunos estilos arquitectonicos de la antigüedad
Algunos estilos arquitectonicos de la antigüedadAlgunos estilos arquitectonicos de la antigüedad
Algunos estilos arquitectonicos de la antigüedadHalime Holguín Bustos
 

Destacado (16)

Tema 14 El Renacimiento Español 2017
Tema 14 El Renacimiento Español 2017Tema 14 El Renacimiento Español 2017
Tema 14 El Renacimiento Español 2017
 
Elementos del Neoclasico
Elementos del NeoclasicoElementos del Neoclasico
Elementos del Neoclasico
 
Elementos arquitectónicos del estilo neoclásico
Elementos arquitectónicos del estilo neoclásicoElementos arquitectónicos del estilo neoclásico
Elementos arquitectónicos del estilo neoclásico
 
Estilos arquitectónicos de casas en Culiacán
Estilos arquitectónicos de casas en CuliacánEstilos arquitectónicos de casas en Culiacán
Estilos arquitectónicos de casas en Culiacán
 
Partido Arquitectonico
Partido ArquitectonicoPartido Arquitectonico
Partido Arquitectonico
 
Arte Renacimiento Arquitectura España
Arte Renacimiento Arquitectura EspañaArte Renacimiento Arquitectura España
Arte Renacimiento Arquitectura España
 
Identificación de elementos arquitectónicos del estilo neoclásico
Identificación de elementos arquitectónicos del estilo neoclásicoIdentificación de elementos arquitectónicos del estilo neoclásico
Identificación de elementos arquitectónicos del estilo neoclásico
 
Identificación de Elementos Arquitectónicos del Estilo Neoclásico
Identificación de Elementos Arquitectónicos del Estilo NeoclásicoIdentificación de Elementos Arquitectónicos del Estilo Neoclásico
Identificación de Elementos Arquitectónicos del Estilo Neoclásico
 
El gran hotel Bolívar Perú
El gran hotel Bolívar PerúEl gran hotel Bolívar Perú
El gran hotel Bolívar Perú
 
Análisis arquitectónico, FORMA, VALLES BOLIVIANOS, U.A.G.R.M., Arquitectura
Análisis arquitectónico, FORMA, VALLES BOLIVIANOS, U.A.G.R.M., Arquitectura Análisis arquitectónico, FORMA, VALLES BOLIVIANOS, U.A.G.R.M., Arquitectura
Análisis arquitectónico, FORMA, VALLES BOLIVIANOS, U.A.G.R.M., Arquitectura
 
Estilos y tendencias del diseño arquitectonico
Estilos y tendencias del diseño arquitectonicoEstilos y tendencias del diseño arquitectonico
Estilos y tendencias del diseño arquitectonico
 
Analisis elementos arquitectura estilo neoclasico
Analisis elementos arquitectura estilo neoclasicoAnalisis elementos arquitectura estilo neoclasico
Analisis elementos arquitectura estilo neoclasico
 
Identificación de elementos arquitectónicos del estilo neoclásico
Identificación de elementos arquitectónicos del estilo neoclásicoIdentificación de elementos arquitectónicos del estilo neoclásico
Identificación de elementos arquitectónicos del estilo neoclásico
 
Analisis Arquitectonico
Analisis ArquitectonicoAnalisis Arquitectonico
Analisis Arquitectonico
 
Algunos estilos arquitectonicos de la antigüedad
Algunos estilos arquitectonicos de la antigüedadAlgunos estilos arquitectonicos de la antigüedad
Algunos estilos arquitectonicos de la antigüedad
 
LA ARQUITECTURA NEOCLÁSICA
LA ARQUITECTURA NEOCLÁSICALA ARQUITECTURA NEOCLÁSICA
LA ARQUITECTURA NEOCLÁSICA
 

Similar a Estilos arquitectónicos para sistemas de software

Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docxKeiberOrtiz1
 
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
 
Arquitecturas de una aplicación
Arquitecturas de una aplicaciónArquitecturas de una aplicación
Arquitecturas de una aplicaciónJesus Caceres Tello
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturasenlinea70
 
Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Jose Emilio Labra Gayo
 
Clase7 unidad1
Clase7 unidad1Clase7 unidad1
Clase7 unidad1zurda21
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónicoDamián Rotta
 
Unidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasUnidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasSergio Sanchez
 
050608 architect academy webcast 1
050608 architect academy webcast 1050608 architect academy webcast 1
050608 architect academy webcast 1juliank13
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
Fundamentos de Diseño - Grupo Delta
Fundamentos de Diseño - Grupo DeltaFundamentos de Diseño - Grupo Delta
Fundamentos de Diseño - Grupo DeltaNicola Pizzi Castro
 
La arquitectura de 41 vistas
La arquitectura de 41 vistasLa arquitectura de 41 vistas
La arquitectura de 41 vistaszurda21
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareDannys Hidalgo
 
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
 

Similar a Estilos arquitectónicos para sistemas de software (20)

Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docx
 
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
PatronesPatrones
Patrones
 
Arquitecturas de una aplicación
Arquitecturas de una aplicaciónArquitecturas de una aplicación
Arquitecturas de una aplicación
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturas
 
Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001
 
Clase7
Clase7Clase7
Clase7
 
Clase7 unidad1
Clase7 unidad1Clase7 unidad1
Clase7 unidad1
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Unidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasUnidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De Sistemas
 
6t
6t6t
6t
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
 
Arquitectura. de Software. en ambientes distribuidos.
Arquitectura. de Software. en ambientes distribuidos.Arquitectura. de Software. en ambientes distribuidos.
Arquitectura. de Software. en ambientes distribuidos.
 
MVC.ppt
MVC.pptMVC.ppt
MVC.ppt
 
050608 architect academy webcast 1
050608 architect academy webcast 1050608 architect academy webcast 1
050608 architect academy webcast 1
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Fundamentos de Diseño - Grupo Delta
Fundamentos de Diseño - Grupo DeltaFundamentos de Diseño - Grupo Delta
Fundamentos de Diseño - Grupo Delta
 
La arquitectura de 41 vistas
La arquitectura de 41 vistasLa arquitectura de 41 vistas
La arquitectura de 41 vistas
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
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
 

Más de Demián Gutierrez

Más de Demián Gutierrez (20)

Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)
 
Hg mini manual
Hg mini manualHg mini manual
Hg mini manual
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 
Clase 14a uml_estados
Clase 14a uml_estadosClase 14a uml_estados
Clase 14a uml_estados
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplos
 
Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 
Clase 11 uml_casos_de_uso
Clase 11 uml_casos_de_usoClase 11 uml_casos_de_uso
Clase 11 uml_casos_de_uso
 
Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
Clase 09c seleccion
Clase 09c seleccionClase 09c seleccion
Clase 09c seleccion
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemplo
 
Clase 09a frameworks
Clase 09a frameworksClase 09a frameworks
Clase 09a frameworks
 
Clase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualClase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtual
 
Clase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaClase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cleda
 
Clase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemploClase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemplo
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigo
 
Clase 05c niveles de pruebas
Clase 05c niveles de pruebasClase 05c niveles de pruebas
Clase 05c niveles de pruebas
 
Clase 05b pruebas introduccion
Clase 05b pruebas introduccionClase 05b pruebas introduccion
Clase 05b pruebas introduccion
 
Clase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionClase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacion
 

Estilos arquitectónicos para sistemas de software

  • 1. Estilos Arquitectónicos (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013 1
  • 2. Diseño Arquitectónico Arquitectura del Software Diseño Arquitectónico Estilos Frameworks Arquitectónicos (Marcos) Patrones de Bibliotecas / Diseño Componentes Clases / Funciones 2
  • 3. Diseño Arquitectónico ¿qué es un estilo? ¿qué es un estilo arquitectónico? 3
  • 4. Estilos Arquitectónicos Art Deco Modernismo aunque conste que sigo pensando que la comparación del software con la ingeniería civil es muy desafortunada 4
  • 5. Estilos Arquitectónicos aunque conste que sigo pensando que la comparación del software con la ingeniería civil es muy desafortunada 5
  • 6. ¿Estilos Arquitectónicos? Un estilo arquitectónico define una familia de sistemas (cierto tipo de sistemas) en términos de patrones estructurales, de control, de comunicación, etcétera Sommerville (Cap 11) 6
  • 7. Estilos Arquitectónicos un estilo arquitectónico describe Un conjunto de componentes y (con sus responsabilidades) Un conjunto de conectores entre componentes (comunicación, coordinación, cooperación, etcétera) Restricciones que definen cómo se integran los componentes para formar el sistema Modelos que permiten comprender las propiedades de un sistema general en función de las propiedades conocidas de las partes que lo integran ¿no suena todo esto sospechosamente parecido al concepto de arquitectura de software? 7 Fuente: Pressman (Cap 10)
  • 8. Diseño Arquitectónico La arquitectura de un sistema de software puede basarse en uno (o en varios) modelos o estilos arquitectónicos bien conocidos Sommerville (Cap 11) un estilo arquitectónico define (a alto nivel) la arquitectura de un sistema 8
  • 9. Estilos Arquitectónicos para todas los estilos arquitectónicos (arquitecturas) es necesario preguntarse: ¿en qué contextos aplica? ¿qué ventajas tiene el estilo? ¿qué desventajas tiene? ¿cómo se combina con otros estilos? 9
  • 10. Estilos Arquitectónicos Impacto en los Requisitos NF Seguridad Confiabilidad Rendimiento Extensibilidad Eficiencia Facilidad de Mantenibilidad Memoria/Ejecución Prueba Portabilidad Disponibilidad Reusabilidad Escalabilidad ...otras... ¿de qué forma impacta el uso de un estilo en las propiedades del sistema? 10
  • 11. Estilos Arquitectónicos ¿Acoplamiento / Cohesión? ¿qué hay sobre estos dos conceptos? Acoplamiento Cohesión ¿será posible analizar un estilo arquitectónico en función de estos dos conceptos? 11
  • 12. Estilos Arquitectónicos ¿La importancia de la responsabilidad? Responsabilidades ¿cuáles son las responsabilidades de cada bloque/parte de la arquitectura? 12
  • 13. Diseño Arquitectónico algunos estilos arquitectónicos bien conocidos 13
  • 14. Arquitectura Monolítica Una arquitectura monolítica describe una aplicación en la que toda la funcionalidad del sistema (ej. acceso a datos, interfaz de usuario, lógica, etcétera) está implementada y mezclada en un solo bloque. Esto, en la gran mayoría de los casos, no es una buena idea... ¿por qué? Sistema TODO EL SISTEMA ¿impacto sobre el acoplamiento y la cohesión responsabilidades, otras características? Fuente: http://en.wikipedia.org/wiki/Monolithic_application 14
  • 15. Arquitectura Monolítica (Un Ejemplo) Código cliente general, Programa Cliente interfaces de usuario, lógica, todo mezclado con el SQL, con el código encargado del acceso a la BD, etc. Si es necesario cambiar el código de acceso a la BD, (por ejemplo, migrar de MySQL a PostgreSQL) ¿el trabajo se hace fácil o difícil? 15
  • 16. Arquitectura Monolítica (Un Ejemplo / Una Mejora) Código cliente general, Programa Cliente interfaces de usuario, lógica, etc. Código SQL junto al código encargado del acceso a la BD DAOs / DTO Si es necesario cambiar el código de acceso a la BD, (por ejemplo, migrar de MySQL a PostgreSQL) ¿el trabajo se hace fácil o difícil? 16
  • 17. Estilos Arquitectónicos (Tuberías y Filtros) Filtros Tuberías (Transformación (Flujo de de Datos / Datos / Información) Información) Filtro 3 Filtro 1 Filtro 4 Filtro 5 Filtro 2 Tuberías y Filtros ¿Impacto sobre el acoplamiento y la cohesión? 17
  • 18. Estilos Arquitectónicos (Tuberías y Filtros) Tuberías y Filtros 18
  • 19. Estilos Arquitectónicos (Tuberías y Filtros) Tuberías y Filtros El “pipeline” de OpenGL 19
  • 20. Arquitectura por Capas API (Application Capa 1 Programming Mas Seguridad / Protección Interface) Interfaz Menos Abstracción Capa 2 ... Capa N Arquitectura por Capas ¿Impacto sobre el acoplamiento y la cohesión? 20
  • 21. Arquitectura por Capas (La Infame Arquitectura a 3 Capas) Capa de Presentación Capa de Proceso / (Interfaz Negocio Gráfica de Capa de Usuario) Persistencia BD (Lógica / Reglas de (HTML, Swing, Negocio) Qt, GTK, etcétera) Arquitectura a tres Capas (muy utilizada en aplicaciones empresariales) 21
  • 22. Arquitectura por Capas (Sistemas Operativos) Arquitectura por Capas 22
  • 23. Estilos Arquitectónicos (Repositorio / Pizarrón) Aplicación / Aplicación / Aplicación / Modulo 1 Modulo 2 Modulo 3 Repositorio (Base de Datos, Sistema de Archivos, Memoria Compartida, etcétera) Aplicación / Aplicación / ... Modulo 4 Modulo N Repositorio / Pizarrón ¿Impacto sobre el acoplamiento y la cohesión? 23
  • 24. Estilos Arquitectónicos (Control Centralizado - Síncrono) Programa Principal Rutina 1 Rutina 2 Rutina 3 Rutina 1.1 Rutina 1.2 Rutina 2.1 Rutina 2.1 Rutina 3.1 Rutina 3.2 Control Centralizado 24
  • 25. Estilos Arquitectónicos (Control Centralizado - Asíncrono) Procesos Procesos Tipo 1 Tipo 4 (Ej: Sensores) (Ej: Actuadores) Controlador del Sistema Procesos Procesos Procesos Tipo 2 Tipo 3 Tipo 5 (Ej: Cálculo) (Ej: Fallos) (Ej: Fallos) Control Centralizado ¿Impacto sobre el acoplamiento y la cohesión? 25
  • 26. Estilos Arquitectónicos (Sistemas Dirigidos por Eventos) Cada subsistema genera eventos según su condición y define que eventos de otros subsistemas desea atender Subsistema Subsistema Subsistema ... 1 2 N Manejador de Eventos El manejador de eventos se encarga de enviar los eventos generados a aquellos sistemas interesados en recibirlos ¿Impacto sobre el acoplamiento y la cohesión? 26
  • 27. Arquitectura Cliente-Servidor Petición Respuesta Cliente 1 Red Servidor 1 ... Internet, Cliente 2 LAN, WAN ... Servidor N Cliente N Cliente Servidor 27
  • 28. Arquitectura Cliente-Servidor (Liviano vs Pesado) Petición Respuesta Red Cliente Servidor ¿Cliente “Liviano” vs Cliente Pesado? 28
  • 29. Arquitectura WEB (Contenido Estático) Petición: GET index.html Cliente navegador WEB Servidor (Ej. Firefox) servidor WEB index.html (Ej. Apache) Respuesta: Arquitectura WEB (Contenido Estático) 29
  • 30. Arquitectura WEB (Contenido Dinámico) Petición: GET index.php Cliente navegador WEB Servidor Servidor (Ej. Firefox) resultado en HTML motor de Respuesta: PHP BD index.php Arquitectura WEB (Contenido Dinámico) 30
  • 31. Diseño Arquitectónico ¿cómo se podría combinar el estilo cliente-servidor con los otros estilos que hemos discutido? 31
  • 32. Estilos Arquitectónicos (Sistema Distribuido / Arquitecturas Peer To Peer) P2 P6 P5 Un par puede jugar un rol de P1 cliente y/o de servidor, dependiendo de P7 P4 las necesidades del momento P3 P8 P9 Cada uno de los pares descubre a sus otros pares y establecen conexiones al mismo nivel (no de forma jerárquica) cooperando para lograr un objetivo determinado 32
  • 33. Estilos Arquitectónicos (Arquitecturas de Referencia) Normalmente se obtienen por medio del estudio de un tipo de aplicación (de un dominio en particular) Representan una arquitectura “ideal” que incluye todas las características que cierto tipo de sistema podría/debería incorporar 33
  • 34. Gracias ¡Gracias! 34