Arquitectura de Software (Estilos Arquitectónicos) Universidad de los Andes Demián Gutierrez Mayo 2011 1
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
Diseño Arquitectónico ¿Qué es un estilo? - ¿Qué es un estilo arquitectónico? 3
Estilos Arquitectónicos Deconstructivismo Art Deco 4
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
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
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
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
¿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
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
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
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
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
Estilos Arquitectónicos (Cliente / Servidor - WEB) Fuente Imagen: http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web 14
Estilos Arquitectónicos (Cliente / Servidor - WEB) Fuente Imagen: http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web 15
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
Estilos Arquitectónicos (Tuberías y Filtros) Tuberías y Filtros 17
Estilos Arquitectónicos (Tuberías y Filtros) Tuberías y Filtros 18
Arquitectura (Ejemplo) API (Application Capa 1 programming Mas Seguridad / Protección interface) Interfaz Menos Abstracción Capa 2 ... Capa N Arquitectura por Capas 19
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
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
Estilos Arquitectónicos (Arquitectura por Capas) Arquitectura por Capas 22
Estilos Arquitectónicos (Arquitectura por Capas) Arquitectura por Capas 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 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 26
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
Estilos Arquitectónicos (Interprete / Máquina Virtual) “Write once, run anywhere” Sun Microsystems 28
Estilos Arquitectónicos (Interprete / Máquina Virtual) “Write once, run anywhere” Sun Microsystems 29
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
Estilos Arquitectónicos (RPC / RMI) RPC: Remote Procedure Call RMI: Remote Method Invocation 31
Estilos Arquitectónicos (RPC / RMI) RPC: Remote Procedure Call RMI: Remote Method Invocation 32
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
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
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
Estilos Arquitectónicos (Arquitectura basada en Plugins) API (Application programming interface) Interfaz bien definida Fuente: http://en.wikipedia.org/wiki/Plugin 36
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
Estilos Arquitectónicos (Plugins / Eclipse) 38
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
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
Gracias ¡Gracias! 41
Recommend
More recommend