arquitectura de software
play

Arquitectura de Software (Estilos Arquitectnicos) Universidad de - PowerPoint PPT Presentation

Arquitectura de Software (Estilos Arquitectnicos) Universidad de los Andes Demin Gutierrez Mayo 2011 1 Diseo Arquitectnico Arquitectura del Software Diseo Arquitectnico Frameworks Estilos (Marcos) Arquitectnicos Patrones


  1. Arquitectura de Software (Estilos Arquitectónicos) Universidad de los Andes Demián Gutierrez Mayo 2011 1

  2. Diseño Arquitectónico Arquitectura del Software Diseño Arquitectónico Frameworks Estilos (Marcos) Arquitectónicos 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 Deconstructivismo Art Deco 4

  5. Estilos Arquitectónicos Los ingenieros civiles, cuando tienen que construir un puente generalmente seleccionan un tipo de puente determinado que se adapte a las necesidades del contexto y del problema a resolver... 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 La arquitectura de un sistema de software puede basarse en uno (o en varios) modelos o estilos arquitectónicos bien conocidos Fuente: Sommerville (Cap 11) 6

  7. Estilos Arquitectónicos Un estilo arquitectónico describe: Un conjunto de componentes (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 Fuente: Pressman (Cap 10) 7

  8. Estilos Arquitectónicos Para todas las arquitecturas (estilos arquitectónicos) mostrados a continuación es necesario preguntarse: ¿Qué ventajas tiene el estilo? ¿Qué desventajas tiene? ¿En qué contextos aplica? 8

  9. ¿Otros aspectos de la gestión de proyectos? Una reflexión final sobre lo profundo del abismo Seguridad Confiabilidad Rendimiento Usabilidad Eficiencia Facilidad de Mantenibilidad (memoria, Prueba ejecución) Portabilidad Disponibilidad Reusabilidad Escalabilidad otras... Modificabilidad Extensibilidad ¿De qué forma impacta el uso un estilo en las propiedades del sistema? 9

  10. Estilos Arquitectónicos 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 una sola capa. Esto, en la gran mayoría de los casos, no es una buena idea... ¿Por qué? Sistema ¿Tip: Recuerdan el ejemplo del sistema (TODO EL de empaquetamiento de Sommerville y SISTEMA) la discusión subsecuente? Fuente: http://en.wikipedia.org/wiki/Monolithic_application 10

  11. 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 / Pizarron 11

  12. Estilos Arquitectónicos (Cliente / Servidor) Petición Respuesta Cliente 1 Red Servidor 1 ... Internet, LAN, WAN Cliente 2 ... Servidor N Cliente N Cliente Servidor 12

  13. Estilos Arquitectónicos (Cliente / Servidor) Petición Respuesta Red Cliente Servidor Liviano: Lógica de la Aplicación solamente del lado del servidor Pesado: Lógica de la Aplicación parcial o totalmente del lado del cliente Cliente “Liviano” vs Cliente Pesado 13

  14. Estilos Arquitectónicos (Cliente / Servidor - WEB) Fuente Imagen: http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web 14

  15. Estilos Arquitectónicos (Cliente / Servidor - WEB) Fuente Imagen: http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web 15

  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 16

  17. Estilos Arquitectónicos (Tuberías y Filtros) Tuberías y Filtros 17

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

  19. Arquitectura (Ejemplo) API (Application Capa 1 programming Mas Seguridad / Protección interface) Interfaz Menos Abstracción Capa 2 ... Capa N Arquitectura por Capas 19

  20. Arquitectura (Ejemplo) Capa de Presentación Capa de Proceso / (Interfaz Negocio Gráfica de Capa de BD Usuario) Persistencia (Lógica / Reglas de (HTML, Swing, Negocio) Qt, GTK, etcétera) Arquitectura a tres Capas (Muy utilizado en aplicaciones empresariales) 20

  21. Arquitectura (Ejemplo con más detalle) Servlets Aplicación Modelo de Dominio CledaTags MVC Hibernate CledaMVC JDBC Navegador (Struts1) Documentos BD WEB o Echo2 Motor CledaCore de Workflow (CledaFlow, CledaScheduler y CledaBase) Arquitectura a tres Capas (Muy utilizado en aplicaciones empresariales) 21

  22. Estilos Arquitectónicos (Arquitectura por Capas) Arquitectura por Capas 22

  23. Estilos Arquitectónicos (Arquitectura por Capas) Arquitectura por Capas 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 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 26

  27. Estilos Arquitectónicos (Interprete / Máquina Virtual) Datos Programa (Estado del a Interpretar Programa) Hardware Simulado (CPU, dispositivos, etc) Máquina Virtual Hardware Real (CPU, dispositivos, memoria, etc) 27

  28. Estilos Arquitectónicos (Interprete / Máquina Virtual) “Write once, run anywhere” Sun Microsystems 28

  29. Estilos Arquitectónicos (Interprete / Máquina Virtual) “Write once, run anywhere” Sun Microsystems 29

  30. Estilos Arquitectónicos (Interprete / Máquina Virtual) Código Código Código Código Código Java Scala Clojure JRuby Jython Foo.java Foo.scl Foo.clj Foo.ruby Foo.phy Compilador Compilador Compilador Compilador Compilador Java Scala Clojure JRuby Jython (javac) (...) (...) (...) (...) Java Byte Code + Unix Linux Windows Mac Java Runtime JVM JVM JVM JVM La flexibilidad de la arquitectura Java 30

  31. Estilos Arquitectónicos (RPC / RMI) RPC: Remote Procedure Call RMI: Remote Method Invocation 31

  32. Estilos Arquitectónicos (RPC / RMI) RPC: Remote Procedure Call RMI: Remote Method Invocation 32

  33. Estilos Arquitectónicos (Arquitecturas de Objetos Distribuidos / CORBA) Objeto1 Objeto2 Objeto3 Objeto N (Instancia) (Instancia) (Instancia) (Instancia) Nodo 1 Nodo 2 Nodo N Red (Bus software) El nodo cliente utiliza (de forma transparente) los objetos que existe y están corriendo en los demás nodos Nodo Cliente 33

  34. Estilos Arquitectónicos (Sist. Distribuidos / Arquitecturas Peer To Peer) P2 P6 P5 Un par puede jugar un rol de P1 cliente y/o de servidor, P7 dependiendo P4 de 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 34

  35. Estilos Arquitectónicos (Sist. Distribuidos / Arquitecturas Peer To Peer) P2 P6 P5 Un “servidor” P1 puede servir para coordinar Servidor / P7 el Coordinador descubrimiento de los pares 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 35

  36. Estilos Arquitectónicos (Arquitectura basada en Plugins) API (Application programming interface) Interfaz bien definida Fuente: http://en.wikipedia.org/wiki/Plugin 36

  37. Estilos Arquitectónicos (Plugins / Eclipse) Una estrategia basada en plugins hace que un sistema pueda ser fácilmente extendido y complementado por terceras partes 37

  38. Estilos Arquitectónicos (Plugins / Eclipse) 38

  39. Estilos Arquitectónicos (Arquitecturas de Referencia) Normalmente se obtienen por medio del estudio de una clase de aplicación (de un dominio en particular) Representan una arquitectura ideal que incluye todas las características que cierto tipo (clase) de sistema podría incorporar 39

  40. Lecturas Recomendadas Sommerville, Ingeniería del Software, Capítulos 11, 12 y 13 (En ese orden de prioridades) Pressman, Ingeniería del Software, Capítulo 10 Mary Shaw, David Garlan, Software Architecture Perspectives on an Emerging Discipline (Está en la biblioteca) Patrones Arquitectónicos http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science) 40

  41. Gracias ¡Gracias! 41

Recommend


More recommend