Clase 08a estilos_arquitectonicos
Upcoming SlideShare
Loading in...5
×
 

Clase 08a estilos_arquitectonicos

on

  • 1,132 views

 

Statistics

Views

Total Views
1,132
Views on SlideShare
1,132
Embed Views
0

Actions

Likes
0
Downloads
40
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Clase 08a estilos_arquitectonicos Clase 08a estilos_arquitectonicos Presentation Transcript

  • 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ónicosImpacto 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